MongoDB集合计数返回-1
问题描述:
我有一个MongoDB集合,当我调用db.collection.count()
时返回-1,但是如果我调用db.collection.find()
则返回一个文档。MongoDB集合计数返回-1
负数是否表明收集有问题?我无法在文档中找到任何内容。
我试图在集合中插入一个虚拟文档 - 它将计数值更改为2.删除此文档后,计数值现在保持正确值1,仅存储原始文档。
答
看来,我错过了本节文档:
使用有线虎存储 引擎的mongod的不正常关机后,通过计数计数来报告统计()可能不准确。
漂移量取决于插入,更新或删除最后一个检查点与关闭的不清洁 之间执行的操作的次数。检查点通常每60秒发生一次。但是,使用非默认--syncdelay设置运行的实例可能会有更多 或更少频繁的检查点。
在mongod上的每个集合上运行验证,以便在不正常关闭后恢复 正确的统计信息。
运行db.unboundCollection.validate({full:true})
解决了这个问题。
听起来像一个腐败的数据库。你有没有试过运行repair/repairDatabase()? – Jaco
@Jaco有没有办法确认数据库已损坏?文档建议如果使用replicaset来执行resyncs,但显然我需要确认其他副本是否健康。或者以任何方式调试原因?现在已经看到了同一个应用程序的两个实例。 – JackIngleton
如果问题再次出现,您可以运行'db.collection.validate({full:true})' – Jaco