我正在分析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"
}
答案 0 :(得分:1)
我的猜测是索引存在问题。我敢打赌,droppay有一个索引:time,一些不安全的操作更新了底层集合而没有更新索引。
你可以尝试repairing the db,看看是否能让它变得更好。
祝你好运。答案 1 :(得分:0)
可能有time
个类型为array的值。
您可以db.droppay.find({time: {$type : 4}})
查找此类文件。