我有一个包含约 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(...)
运算符来计算匹配文档的数量。上面的代码是片段,旨在说明不一致性,而不是提供一种计算匹配文档的有效方法。)