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

时间:2011-11-09 10:36:26

标签: mongodb

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

> db.droppay.find().count();  
291822   
> db.droppay.find({time: {$exists : true}}).count()   
293525

如何使用给定字段的元素多于整个集合中包含的元素?出了什么问题?我无法找到错误。 如果有必要,我可以向您发布文件的预期结构。

Mongo Shell版本是1.8.3。 Mongo Db版本是1.8.3。

提前致谢


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

{
  "_id" : ObjectId("4e6729cc96babe974c710611"), 
  "action" : "send",
  "event" : "sent",
  "job_id" : "50a1b7ac-7482-4ad6-ba7d-853249d6a123",    
  "result_code" : "0",
  "sender" : "",
  "service" : "webcontents",
  "service_name" : "webcontents",
  "tariff" : "0",
  "time" : "2011-09-07 10:22:35",
  "timestamp" : "1315383755",
  "trace_id" : "372",
  "ts" : "2011-09-07 09:28:42"
}

2 个答案:

答案 0 :(得分:1)

我的猜测是索引存在问题。我敢打赌,droppay有一个索引:time,一些不安全的操作更新了底层集合而没有更新索引。

你可以尝试repairing the db,看看是否能让它变得更好。

祝你好运。

答案 1 :(得分:0)

可能有time个类型为array的值。

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