mongodb查找返回的结果不一致

时间:2011-08-17 11:18:02

标签: python mongodb pymongo

我在我的mongodb数据库中的一个集合上运行了以下查询。

db.coll.find({field_name:{$exists:true}}).count()并返回2437185. db.coll.find({}).count()报告的总记录数为2437228。

现在,当我运行查询db.coll.find({field_name:{$exists:false}}).count()时,它返回了43而不是返回43。

我有以下两个问题:

  1. 上述情况是否意味着我的收藏中的数据已损坏?

  2. 我之前在(Updating records in MongoDB through pymongo leads to deletion of most of them)发布了一个问题。回复的人表示,更新mongo db中的数据可能会删除数据但不会删除它。这意味着什么?。

  3. 谢谢

1 个答案:

答案 0 :(得分:5)

我相信你遇到了SERVER-1587报道的问题。您使用的是哪个版本的MongoDB?如果它小于1.9.0,您可以使用以下方法作为解决方法:

db.coll.find({field_name: {$not: {$exists: true}}}).count()

至于另一个问题,在这种情况下“消隐”意味着更新可以更改或取消设置文档中的任何或所有字段的值,但不能删除文档本身。删除文档的唯一方法是使用remove()