如果给出查询,则MongoDB的count()错误地返回0

时间:2011-05-17 16:55:29

标签: mongodb database

我们的数据库目前正在运行,一切似乎都很好。我想做一些统计,所以我做了一些标准的电话。基本上我想要一些特定数据的数量。

首先是一些基本调用,向您显示数据库中确实存在数据。

> db.files.count()
814639

> db.files.find({"migrated":true})
{ "migrated" : true, "filename" : "bleh",... }
...

显然有数据,并且调用返回它。现在我想知道有多少结果,但我明白了:

> db.files.count({"migrated":true})        
0

我也这样做了:

> db.files.find({"migrated":true}).count()
0

有没有人知道为什么会发生这种情况?

版本是:

> db.version()
1.8.1

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

这个问题很可能与以下错误有关:

在我的情况下(mongodb 2.0.1)与数据库损坏有关。见find().count() bug?

答案 1 :(得分:1)

过了一会儿,但我现在正在关闭它。但这是一个腐败的数据库。必须手动将所有项目从一个数据库移动到一个新数据库,因为备份在发现损坏的数据时停止,之后的有效数据没有被备份。