コレクションに次のコードがあります。
class Author(Agent):
def foo(self):
self.find_another_document_and_update_it(ids)
self.processed = True
self.save()
def find_another_document_and_update_it(self, ids):
for id in ids:
documentA = Authors.objects(id=id)
documentA.update(inc__mentions=1)
内部find_another_document_and_update_it()
では、データベースにクエリを実行してドキュメントAを取得し、次にAのカウンターをインクリメントします。次にfoo()
、を呼び出した後find_another_document_and_update_it()
、現在のドキュメントも保存します。たとえば、Bと言います。問題は、Aのカウンターがが呼び出されると実際に増加しself.save()
、ドキュメントAは古い値にリセットされます。問題は、並行性の問題と、MongoDBがそれをどのように処理するかに関係していると思います。私はあなたの助けに感謝します。