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クエリ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 つのドキュメントに一致するため、出力は1です。失敗するのは、最初に見つけたときと 2 回目に見つけたときに変更しeたり、何か (別のプロセス) を削除した場合だけです。e

于 2013-06-26T15:10:53.387 に答える