0

私のプログラムでは、mongodb を update(key, doc, upsert=true) で書き込む 10 のプロセス

「キー」はmongodbインデックスですが、一意ではありません。

query = {'hotelid':hotelid,"arrivedate":arrivedate,"leavedate":leavedate}

where = "data.%s" % sourceid
data_value_where = {where:value}
self.collection.update(query,{'$set':data_value_where},True)

「クエリ」ID 一意でないインデックス

更新が存在するデータを更新するのではなく、新しいデータを作成することがあることがわかりました。

更新メソッドの戻り値のログを書きます。戻り値は " {u'ok': 1.0, u'err': None, u'upserted': ObjectId('5245378b4b184fbbbea3f790'), u'singleShard': u'rs1/192.168 .0.21:10000,192.168.1.191:10000,192.168.1.192:10000,192.168.1.41:10000,192.168.1.113:10000', u'connectionId': 1894107, u'n': 1, u'updatedExisting': False 、u'lastOp': 5928205554643107852L}"

update メソッドを update(query, {'$set':data_value_where},upsert=True, safe=True) に変更しましたが、この質問では 3 に変更はありません。

4

2 に答える 2

0

更新自体はPythonでは行われず、一度に多くのリクエストに対応するように構築されたmongodbにあるため、「スレッドセーフ」と呼ぶことができます。

要約すると、安全に行うことができます。

于 2013-09-25T04:16:37.697 に答える