假设我想对文档update
执行一些简单的e
操作,如下所示:
print 'Updating:',e['title'],e['_id']
jp.update(e,{'$set':{'sensesJa':sensesJa,'last':'#pushFormsAndSetNewAtt'},
'$push':{'forms':{'$each':forms_to_push}}})
它确实打印了'更新:...',但文档没有更新。有什么想法吗?
更新:添加要点: https://gist.github.com/actor2019/5876903#file-clip-mongodb-pymongo-update-didnt-work-py-L36
答案 0 :(得分:0)
您的更新的查询部分不匹配任何文档,因此不会匹配任何内容进行更新。
如您所知_id
,然后仅查询e["_id"]
将确保您的查询正确定位。
jp.update(e['_id'], {'$set':{'sensesJa':sensesJa,'last':'#pushFormsAndSetNewAtt'},
'$push':{'forms':{'$each':forms_to_push}}})
只要有匹配的内容,查询整个文档就可以了和。以下是查询和查找文档的示例:
from pymongo import *
client = MongoClient()
coll = client.test.test
coll.save({'_id': 1, 'hello': 'world'})
e = coll.find_one()
print(e)
coll.find(e).count()
输出 1 ,因为它与一个文档匹配。唯一一次失败的是,如果我在第一次找到第一次然后第二次更改e
或其他(另一个进程)时删除了e
。