MongoDB集合计数返回-1

MongoDB集合计数返回-1

问题描述:

我有一个MongoDB集合,当我调用db.collection.count()时返回-1,但是如果我调用db.collection.find()则返回一个文档。MongoDB集合计数返回-1

负数是否表明收集有问题?我无法在文档中找到任何内容。

我试图在集合中插入一个虚拟文档 - 它将计数值更改为2.删除此文档后,计数值现在保持正确值1,仅存储原始文档。

+0

听起来像一个腐败的数据库。你有没有试过运行repair/repairDatabase()? – Jaco

+0

@Jaco有没有办法确认数据库已损坏?文档建议如果使用replicaset来执行resyncs,但显然我需要确认其他副本是否健康。或者以任何方式调试原因?现在已经看到了同一个应用程序的两个实例。 – JackIngleton

+1

如果问题再次出现,您可以运行'db.collection.validate({full:true})' – Jaco

看来,我错过了本节文档:

使用有线虎存储 引擎的mongod的不正常关机后,通过计数计数来报告统计()可能不准确。

漂移量取决于插入,更新或删除最后一个检查点与关闭的不清洁 之间执行的操作的次数。检查点通常每60秒发生一次。但是,使用非默认--syncdelay设置运行的实例可能会有更多 或更少频繁的检查点。

在mongod上的每个集合上运行验证,以便在不正常关闭后恢复 正确的统计信息。

运行db.unboundCollection.validate({full:true})解决了这个问题。