MongoDB:查询结果大小大于集合大小

MongoDB:查询结果大小大于集合大小,mongodb,Mongodb,我正在分析MongoDB数据源以检查其质量。 我想知道是否每个文档都包含属性time:因此我使用了这两个命令 >db.droppay.find().count(); 291822 >db.droppay.find({time:{$exists:true}}).count() 293525 如何使给定字段中的元素比整个集合中包含的元素多?怎么了?我找不到错误。 如果有必要,我可以把文件的预期结构发给你 MongoShell版本是1.8.3。MongoDB版本是1.8.3 提前谢谢 这是文档条目

我正在分析MongoDB数据源以检查其质量。 我想知道是否每个文档都包含属性
time
:因此我使用了这两个命令

>db.droppay.find().count();
291822
>db.droppay.find({time:{$exists:true}}).count()
293525
如何使给定字段中的元素比整个集合中包含的元素多?怎么了?我找不到错误。 如果有必要,我可以把文件的预期结构发给你

MongoShell版本是1.8.3。MongoDB版本是1.8.3

提前谢谢


这是文档条目的预期结构:

{
“_id”:ObjectId(“4E6729CC96974C710611”),
“操作”:“发送”,
“事件”:“已发送”,
“作业id”:“50a1b7ac-7482-4ad6-ba7d-853249d6a123”,
“结果代码”:“0”,
“发件人”:“收件人”,
“服务”:“网络内容”,
“服务名称”:“网络内容”,
“关税”:“0”,
“时间”:“2011-09-07 10:22:35”,
“时间戳”:“1315383755”,
“跟踪id”:“372”,
“ts”:“2011-09-07 09:28:42”
}

可能存在数组类型的
时间


您可以使用
db.droppay.find({time:{$type:4}})
查找此类文档。

我猜这是索引的问题。我打赌droppay有一个索引:time,并且一些不安全的操作在不更新索引的情况下更新了基础集合

你能试试吗,看看这样会不会更好


祝你好运。

真奇怪,你能更新文档结构吗……我能插入、更新和阅读收藏。我用预期的文档结构更新了答案。是否也会计算“时间戳”?此外,您还可以尝试查找哪些对象在“exists”查询中被多次计数(根据)。“explain()”输出中有什么有趣的东西吗?您是否重命名了字段?explain()显示的唯一有趣的事情是,查询过程中扫描的对象数是相同的。这两个查询扫描的对象数等于第二个(293525)结果的大小:我假设该点位于find()调用中。我尝试使用find({}),但结果(正如预期的)是相同的。我删除了所有带有时间戳字段的文档,并重新运行查询,结果如下:db.droppay.find().count()=101624;db.droppay.find({“ts”:{$exists:true}).count()=102402;db.droppay.find({“time”:{$exists:true}}).count()=103327。建议不错!但不幸的是,这不是问题所在。我尝试了这个查询,它返回一个空结果。。。