mongodb(pymongo)`update`没有用

时间:2013-06-26 10:32:16

标签: python mongodb pymongo nosql

假设我想对文档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

1 个答案:

答案 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