我正在尝试在我的 MongoDB 上运行一些更新操作。我想使用 这里指定的批量更新操作,但这对我不起作用,使用 pymongo。我的代码如下
import pymongo
client = pymongo.MongoClient()
db = client.test
bulk = db.testCol.initialize_unordered_bulk_op();
bulk.find({"_id":"1,1,1"}).update({"$set":{"attr1":1, "attr2":"X", "attr3":99}})
print bulk.execute()
这个的输出是:
{'nModified': 0, 'nUpserted': 0, 'nMatched': 1, 'writeErrors': [], 'upserted': [], 'writeConcernErrors': [], 'nRemoved': 0, 'nInserted': 0}
据我了解,Mongo 正在查找文档(nMatched=1),但没有更新它(nModified=0)。我不明白它为什么这样做。
当我手动执行操作时,没有使用 Bulk,输出似乎是正确的,并且记录是按要求修改的。代码:
import pymongo
client = pymongo.MongoClient()
db = client.test
print db.testCol.update({"_id":"1,1,1"}, {"attr1":1, "attr2":"X", "attr3":99})
这确实有效,无论是印刷品还是数据库的内容都证实了这一点。
{'updatedExisting': True, u'nModified': 1, u'ok': 1, u'n': 1}
我无法弄清楚我做错了什么。据我所知,我已经按照正确的程序执行批量更新。