我在我的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。
我有以下两个问题:
上述情况是否意味着我的收藏中的数据已损坏?
我之前在(Updating records in MongoDB through pymongo leads to deletion of most of them)发布了一个问题。回复的人表示,更新mongo db中的数据可能会删除数据但不会删除它。这意味着什么?。
谢谢
答案 0 :(得分:5)
我相信你遇到了SERVER-1587报道的问题。您使用的是哪个版本的MongoDB?如果它小于1.9.0,您可以使用以下方法作为解决方法:
db.coll.find({field_name: {$not: {$exists: true}}}).count()
至于另一个问题,在这种情况下“消隐”意味着更新可以更改或取消设置文档中的任何或所有字段的值,但不能删除文档本身。删除文档的唯一方法是使用remove()