mongodb - 为什么 mongo 计数不加起来?

标签 mongodb mongodb-query exists

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

> 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()

关于mongodb - 为什么 mongo 计数不加起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27899114/

相关文章:

performance - 使用 'exists' 进行额外的哈希查找?

node.js - 聚合方法未按预期工作

mongodb - 如何在golang中使用$unwind?

mongodb - 将 mongosh MongoDB Shell 的输出通过管道传输到输出文件 (Windows)

mongodb - 反向 JSON 查询 : find all queries in a collection matching an object

java - MongoDb 在java中比较同一集合中的两个字段

javascript - 使用 MongoDB map-reduce 生成扁平化文档

C# Mongo DeleteMany - 不使用类

sql-server - 无法理解此 EXISTS 查询

MySQL 选择状态数组中的位置和最后一次出现等于特定值