为什么 mongo 计数不加起来?

why mongo count doesn't add up?

有谁知道为什么执行接下来的 3 个查询时 mongodb returns 奇怪的结果计数?看起来第一次和第二次计数的结果应该等于第三次,但事实并非如此。我所做的就是计算包含某个字段的文档数 + 不包含该字段的文档数。我希望这等于文档总数:

> db.col1.find({f1:{$exists:false}}).count()
0
> db.col1.find({f1:{$exists:true}}).count()
267837
> db.col1.count()
268185

可能是因为您在 f1 字段上有一个稀疏索引? 如果是这样,试试看它们是否匹配:

db.col1.find({f1:{$exists:false}}).hint({f1:1}).count()
db.col1.find({f1:{$exists:false}}).hint({_id:1}).count()