当前位置:  开发笔记 > 编程语言 > 正文

你如何在Mongo中查询"is not null"?

如何解决《你如何在Mongo中查询"isnotnull"?》经验,为你挑选了5个好方法。

我想执行以下查询:

db.mycollection.find(HAS IMAGE URL)

什么应该是正确的语法?



1> Tim Gautier..:

这将使用名为"IMAGE URL"的键返回所有文档,但它们仍可能具有空值.

db.mycollection.find({"IMAGE URL":{$exists:true}});

这将返回包含名为"IMAGE URL"的键非空值的所有文档.

db.mycollection.find({"IMAGE URL":{$ne:null}});

另外,根据文档,$ exists目前不能使用索引,但$ ne可以.

编辑:由于对此答案感兴趣,添加一些示例

鉴于这些插入:

db.test.insert({"num":1, "check":"check value"});
db.test.insert({"num":2, "check":null});
db.test.insert({"num":3});

这将返回所有三个文件:

db.test.find();

这将仅返回第一个和第二个文档:

db.test.find({"check":{$exists:true}});

这将仅返回第一个文档:

db.test.find({"check":{$ne:null}});

这将仅返回第二个和第三个文档:

db.test.find({"check":null})


根据文档,`$ ne`**包括不包含字段**的文档.自从您发布答案后,这是否有所改变?http://docs.mongodb.org/manual/reference/operator/query/ne/
我不相信这已经改变了.检查$ ne时,将在所有文档中检查该值,包括那些不包含该字段的文档,但$ ne:null仍然不匹配不包含该字段的文档,因为该字段的值仍为null,即使该文档中不存在该字段.
你如何匹配第二个文件?

2> Amitesh..:

一个班轮是最好的:

db.mycollection.find({ 'fieldname' : { $exists: true, $ne: null } });

这里,

mycollection:放置您想要的收藏品名称

fieldname:放置所需的字段名称

解释:

$ exists:如果为true,则$ exists匹配包含该字段的文档,包括字段值为null的文档.如果为false,则查询仅返回不包含该字段的文档.

$ ne选择字段值不等于指定值的文档.这包括不包含该字段的文档.

因此,在您提供的情况下,查询将返回所有具有imageurl字段的文档并且不具有null值:

db.mycollection.find({ 'imageurl' : { $exists: true, $ne: null } });


$ exists:true是多余的,$ ne:null是足够的。

3> user2293072..:

在pymongo你可以使用:

db.mycollection.find({"IMAGE URL":{"$ne":None}});

因为pymongo将mongo"null"表示为python"None".



4> Farouk El kh..:

db.collection_name.find({"filed_name":{$exists:true}});

获取包含此filed_name的文档,即使它为null.

我的主张:

db.collection_name.find({"field_name":{$type:2}}) //type:2 == String

您可以检查所需属性的类型,它将返回其field_name查询包含值的所有文档,因为您正在检查字段的类型否则如果它为null,则类型条件不匹配,因此不会返回任何内容.

Nb:如果field_name有一个空字符串,意思是"",它将被返回.它的行为是相同的 db.collection_name.find({"filed_name":{$ne:null}});

额外验证:

好的,所以我们还没有完成,我们需要一个额外的条件.

db.collection_name. find({ "field_name":{$type:2},$where:"this.field_name.length >0"})

要么

db.collection_name. find({ "field_name":{$ne:null},$where:"this.field_name.length >0"})

所有类型的参考:https: //docs.mongodb.com/manual/reference/operator/query/type/#op._S_type



5> xameeramir..:

分享给未来的读者.

此查询适用于我们(从MongoDB指南针执行的查询):

{
  "fieldName": {
    "$nin": [
      "",
      null
    ]
  }
}

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有