2

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

4

1 回答 1

0

更新的查询部分不匹配任何文档,因此没有任何内容匹配更新。

如您所知,_id然后查询 juste["_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

于 2013-06-26T15:10:53.387 回答