我注意到了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
}
答案 0 :(得分:0)
.stats()返回已分配记录的数量以及平均对象大小,范围等。 此调用不应该获取有关您的集合的确切信息(如许多文档)。
实施例: 你插入了100个文档,然后删除了99.该集合仍然被分配来处理100个文档。 不要依赖.stats()调用,除非您仅出于提供信息目的而需要它。
在您的情况下,我们有完全相反的行为。可能是,破指数。