pymon go update_one не обновляется на основе _id - PullRequest
1 голос
/ 05 марта 2020

У меня есть этот набор изменений:

change_set = {'name': 'bso save job again', 'location': 'new york city', 'expires': '2020-04-04', 'created': '2020-03-05'}

с этим идентификатором (я не создаю этот идентификатор, это фактически из более раннего сохранения):

id = '5e6107ddfef5aa3c2e3647b2'

I ' Я пытаюсь сделать это:

result = dbjobs.update_one({'_id': id}, {'$set': change_set})

мой result.raw_result таков:

{'n': 0, 'nModified': 0, 'ok': 1.0, 'updatedExisting': False}

Не выдает ошибку, я просто получаю ноль изменений. Я обновляюсь неправильно?

1 Ответ

2 голосов
/ 05 марта 2020

TLDR: вы id должны иметь тип ObjectId, а не string.

Добавьте это к своему коду:

from bson.objectid import ObjectId
id = ObjectId('5e6107ddfef5aa3c2e3647b2')

Краткое объяснение для устранения таких проблем:

Из рассмотрения возвращаемого значения update_one, в частности, поля ok возвращает 1, что означает, что операция выполнена успешно.

Объедините это с тем фактом, что n=0 означает, что Mon go не может сопоставить какие-либо документы, поэтому проблема заключается в разделе запроса операции.

...