mongodb find 查询返回的结果不一致
我对 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。
我有以下两个问题:
上述情况是否意味着我的集合中的数据已损坏?。
我之前曾在以下位置发布过一个关于此问题的问题(通过 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 :
Does the above scenario mean that the data in my collection has become corrupt ?.
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信您遇到了 SERVER-1587 中报告的问题。您使用什么版本的 MongoDB?如果它小于 1.9.0,您可以使用以下方法作为解决方法:
至于另一个问题,在这种情况下“消隐”意味着更新可以更改或取消设置中的任何或所有字段的值。文档,但无法删除文档本身。删除文档的唯一方法是使用
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:
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()