MongoDB计数与查询返回的记录多于全部计数

时间:2015-03-12 10:28:16

标签: mongodb mongodb-query

我注意到了MongoDB的奇怪行为,我试着猜出可能出现的问题:

我的MongoDB中包含很多文档。我运行了以下查询:

db.mydocuments.count({_id:{$lte:new ObjectId("549010c9e4b06c2f044f27f4")}});

结果是66.579.389个文件

比我运行以下内容:

db.mydocuments.count();

令人惊讶的是,我得到了以下总数:32.606.242

这是怎么回事?一个集合的整个计数如何小于一个查询计数?至少它需要等于查询计数。

db.mydocument.stats()是:

{
"ns" : "mydb.documents.photos",
"count" : 32606242,
"size" : 76109891776,
"avgObjSize" : 2334,
"storageSize" : 164665658240,
"numExtents" : 97,
"nindexes" : 1,
"lastExtentSize" : 2146426864,
"paddingFactor" : 1,
"systemFlags" : 0,
"userFlags" : 0,
"totalIndexSize" : 1944138336,
"indexSizes" : {
    "_id_" : 1944138336
},
"ok" : 1
}

1 个答案:

答案 0 :(得分:0)

.stats()返回已分配记录的数量以及平均对象大小,范围等。 此调用不应该获取有关您的集合的确切信息(如许多文档)。

实施例: 你插入了100个文档,然后删除了99.该集合仍然被分配来处理100个文档。 不要依赖.stats()调用,除非您仅出于提供信息目的而需要它。

在您的情况下,我们有完全相反的行为。可能是,破指数。