mongodb查找查询返回的不一致结果
我在我的mongodb数据库中的一个集合上运行了以下查询。
db.coll.find({field_name:{$exists:true}}).count()
,结果返回了2437185。使用db.coll.find({}).count()
查询的总记录数是2437228。
现在,当我运行查询db.coll.find({field_name:{$exists:false}}).count()
时,结果不是返回43,而是返回了0。
我有以下两个问题:
以上情况是否意味着我的集合中的数据已经损坏了?
我之前在这里发过一个问题(通过pymongo更新MongoDB中的记录导致大部分记录被删除)。回复我的人说,在mongodb中更新数据可能会使数据变为空,但不会删除它。这是什么意思呢?
谢谢
1 个回答
5
我觉得你遇到的问题是之前提到的 SERVER-1587。你正在使用哪个版本的MongoDB?如果版本低于1.9.0,你可以用下面的方法来解决这个问题:
db.coll.find({field_name: {$not: {$exists: true}}}).count()
至于另一个问题,这里的“blanking out”意思是更新操作可以改变文档中某个字段的值,或者把某些字段清空,但不能删除整个文档。要删除文档,唯一的方法是使用 remove()
。