有谁知道为什么mongodb在执行接下来的3个查询时会返回奇怪的结果计数?似乎第一次和第二次计数的结果应该等于第三次,但事实并非如此。我所做的只是计算包含某个字段的文档数量+不包含该字段的文档数量。我希望它等于文档总数:
> db.col1.find({f1:{$exists:false}}).count()
0
> db.col1.find({f1:{$exists:true}}).count()
267837
> db.col1.count()
268185
答案 0 :(得分:2)
也许是因为你在f1字段上有一个稀疏索引? 如果确实如此,请尝试以查看它们是否匹配:
db.col1.find({f1:{$exists:false}}).hint({f1:1}).count()
db.col1.find({f1:{$exists:false}}).hint({_id:1}).count()