我有一个MongoDB集合,当我调用db.collection.count()
时返回-1,但是如果我调用db.collection.find()
,则会返回一个文档。
这个负数计数是否意味着集合出了问题?我在文档中找不到任何信息。
我尝试向集合中插入一个虚拟文档 - 这将计数更改为2。删除此文档后,计数现在正确为1,只保存原始文档。
我有一个MongoDB集合,当我调用db.collection.count()
时返回-1,但是如果我调用db.collection.find()
,则会返回一个文档。
这个负数计数是否意味着集合出了问题?我在文档中找不到任何信息。
我尝试向集合中插入一个虚拟文档 - 这将计数更改为2。删除此文档后,计数现在正确为1,只保存原始文档。
看起来我错过了文档的这一部分:
使用Wired Tiger存储引擎的mongod发生非正常关闭后,count()报告的计数统计可能不准确。
漂移量取决于最后一个检查点和非正常关闭之间执行的插入、更新或删除操作数量。检查点通常每60秒发生一次。但是,使用非默认的--syncdelay设置运行的mongod实例可能具有更多或更少的检查点频率。
在mongod上对每个集合运行validate以在非正常关闭后恢复正确的统计信息。
运行db.unboundCollection.validate({full:true})
解决了问题。
db.collection.validate({full:true})
。 - Alex