mongodbのコレクションをスキャンしてすべてのアイテムを編集していたとき、次の質問がありました。なぜこれが起こっているのですか?誰でもそれを理解できますか?
デシベル。baiduwords.find().count() = 805280
デシベル。baiduwords.find().size() = 805280
しかし、私は1498400以上に行きます。
import pymongo
if __name__=='__main__':
client = pymongo.MongoClient()
i = 0
collection = client.baike.baiduwords.find()
for item in collection:
i += 1
MajorClass = []
for cl in item['C']:
c = cl
while(1):
a = client.baike.baiduclass.find({'s':c})
if a.count():
a = a[0]
if a['f'] == u'Root':
MajorClass.append(c)
break
else:
c = a['f']
else:
break
item['MC'] = list(set(MajorClass))
client.baike.baiduwords.save(item)
if i%100 == 0:
print "%d/%d"%(i, collection.count())
PS: printShardingStatus: このデータベースではシャーディングが有効になっていません。