mongodb查找查询返回的不一致结果

2 投票
1 回答
1026 浏览
提问于 2025-04-16 23:47

我在我的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。

我有以下两个问题:

  1. 以上情况是否意味着我的集合中的数据已经损坏了?

  2. 我之前在这里发过一个问题(通过pymongo更新MongoDB中的记录导致大部分记录被删除)。回复我的人说,在mongodb中更新数据可能会使数据变为空,但不会删除它。这是什么意思呢?

谢谢

1 个回答

5

我觉得你遇到的问题是之前提到的 SERVER-1587。你正在使用哪个版本的MongoDB?如果版本低于1.9.0,你可以用下面的方法来解决这个问题:

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

至于另一个问题,这里的“blanking out”意思是更新操作可以改变文档中某个字段的值,或者把某些字段清空,但不能删除整个文档。要删除文档,唯一的方法是使用 remove()

撰写回答