我有一个包含大约3000万个文档的MongoDB数据库。它是从单个多处理器计算机(144 GB RAM,运行CentOS 7.1)提供的,而不是分片。我使用Python 3.4用pymongo 3.2.2查询它。数据库使用较少,目前有少量编写者正在更新记录。以下是find
未返回一致结果的情况:
count = 0
for entry in mycollection.find({'fork': {'parent': None, 'root': None}}, {'_id': 1}):
count += 1
print(count)
多次运行时,有时此代码打印72,有时会打印更大的数字(超过2874400)。数字越大并不总是相同的,根据我所知的数据,数字越大,更可能是正确的。尽管如此,我仍然无法解释为什么它有时会打印72。
这种不一致行为的潜在原因是什么?
(注意:是的,我知道我可以使用count(...)
运算符来计算匹配文档的数量。上面的代码是片段,用于说明不一致性,而不是提供一种有效的方法来计算匹配的文档。)