Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymongo中带修改的游标迭代_Python_Cursor_Pymongo - Fatal编程技术网

Python pymongo中带修改的游标迭代

Python pymongo中带修改的游标迭代,python,cursor,pymongo,Python,Cursor,Pymongo,以下是我的片段: mongo_db = pymongo.MongoClient('mongodb://p2buser:p2bpass@192.168.1.102:27018')['YYPei'] brands = mongo_db.fqBrands.find() count= brands.count() i = 0 for brand in brands: i += 1 mongo_db.fqBrands.update({"_id": brand['_id']},{'$set'

以下是我的片段:

mongo_db = pymongo.MongoClient('mongodb://p2buser:p2bpass@192.168.1.102:27018')['YYPei']
brands = mongo_db.fqBrands.find()
count= brands.count()
i = 0
for brand in brands:
    i += 1
    mongo_db.fqBrands.update({"_id": brand['_id']},{'$set': {'enabled': 1})
print count
print i

fqBrands集合中有1603个元素,计数等于它。 而i应该是1603 但结果是i值1687


所以这让我有点困惑,我怎样才能确定它有什么问题。

我不知道“I”值不同的原因。
但是有一种更好的方法来更新所有文档:

mongo_db = pymongo.MongoClient('mongodb://p2buser:p2bpass@192.168.1.102:27018')['YYPei']
brands = mongo_db.fqBrands.find()

count_before= brands.count()
brands.update({},{'$set': {'enabled': 1}, {multi: true})
count_after= brands.count()

print count_before
print count_after

如何打印品牌。计数(使用限制和跳过=真)
打印?此外,您是否使用副本集?此外,如果您删除
update
语句,您是否会打印相同的结果?@alecxe我会得到相同的行为(尽管我使用批量更新,并且有数百万条记录)。有了_limit _和_skip没有区别。没有更新,它就不会发生。数据库上没有非默认设置(没有分片/没有副本集等)。如果忽略
I>=count
的迭代,几乎所有(但不是所有)记录都会更新。还尝试在db上运行验证(true),但没有效果)。我怀疑光标不知怎么被修改了。mongodb v2.4.9,pymongo 3.4.0。