MongoDB: Почему update () возвращает значение null даже в случае успеха?

Я использую этот код для вставки (или обновления, если он уже существует) нового пользователя в базу данных:

emailAddress = self.request.params.get('emailaddress') googleRefreshToken = self.request.params.get('googlerefreshtoken') # upsert new user postData = {"emailAddress" : emailAddress, "googleRefreshToken" : googleRefreshToken} newPost = self.request.db.users.update( { 'emailAddress' : emailAddress }, postData, True ); return json.dumps( newPost, default=json_util.default) 

Я предполагаю, что update () должен возвращать объекты _id или даже сам объект … но он всегда возвращает null, даже если upsert работает правильно. Почему он возвращает null и как я могу заставить его вернуть объект _id или object?

Как описано в документах , если вы включаете safe=True в свои параметры для update , возвращается ответ lastError , иначе он возвращает None . Если вы хотите, чтобы _id документа был обновлен, вам придется либо запросить его отдельно, либо использовать find_and_modify вместо update .