Rob*_*ers 4 python mongodb pymongo
我有这个更改集:
change_set = {'name': 'bso save job again', 'location': 'new york city', 'expires': '2020-04-04', 'created': '2020-03-05'}
Run Code Online (Sandbox Code Playgroud)
使用这个 id(我不是创建这个 id,它实际上是来自早期的保存):
id = '5e6107ddfef5aa3c2e3647b2'
Run Code Online (Sandbox Code Playgroud)
我正在尝试这样做:
result = dbjobs.update_one({'_id': id}, {'$set': change_set})
Run Code Online (Sandbox Code Playgroud)
我的 result.raw_result 是这样的:
{'n': 0, 'nModified': 0, 'ok': 1.0, 'updatedExisting': False}
Run Code Online (Sandbox Code Playgroud)
它没有抛出错误,我只是得到零零钱。难道我更新错了?
TLDR:您的id类型应该是类型ObjectId而不是string。
将其添加到您的代码中:
from bson.objectid import ObjectId
id = ObjectId('5e6107ddfef5aa3c2e3647b2')
Run Code Online (Sandbox Code Playgroud)
调试此类问题的简短说明:
从返回值来看,update_one具体该 ok字段返回1,表示操作成功。
再加上n=0Mongo 无法匹配任何文档的事实,因此问题出在操作的查询部分。