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

发布于 2024-11-30 04:08:40 字数 516 浏览 1 评论 0原文

我对 mongodb 数据库中的集合运行了以下查询。

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

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

我有以下两个问题:

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

  2. 我之前曾在以下位置发布过一个关于此问题的问题(通过 pymongo 更新 MongoDB 中的记录会导致其中大部分记录被删除)。回复的人说,更新mongo db中的数据可以清空数据,但不能删除它。这是什么意思?

谢谢

I ran the following query on a collection in my mongodb database.

db.coll.find({field_name:{$exists:true}}).count() and it returned 2437185. The total records reported by db.coll.find({}).count() is 2437228 .

Now when i run the query db.coll.find({field_name:{$exists:false}}).count() , instead of returning 43 it returned 0.

I have the following two questions :

  1. Does the above scenario mean that the data in my collection has become corrupt ?.

  2. I had posted a question earlier about this at ( Updating records in MongoDB through pymongo leads to deletion of most of them). The person who replied said that updating data in mongo db could blank out the data but not delete it. What does that mean ?.

Thank You

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半仙 2024-12-07 04:08:40

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

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

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

I believe you're running into the issue reported at SERVER-1587. What version of MongoDB are you using? If it is less than 1.9.0, you can use the following as a work-around:

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

As for the other question, "blanking out" in this case means that an update can change the value of or unset any or all fields in a document, but can't remove the document itself. The only way to remove a document is with remove()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文