查询不等于 null 或空的地方

Posted

技术标签:

【中文标题】查询不等于 null 或空的地方【英文标题】:Query where not equal to null or empty 【发布时间】:2017-12-13 21:38:22 【问题描述】:

我正在尝试查找存在电子邮件的所有文档。

我正在尝试以下查找查询:

 "email": $exists:true, $ne:null, $ne:""

我仍然收到电子邮件为null 的文档。

谁能告诉我我做错了什么?

【问题讨论】:

非常感谢老兄!有效。甚至我一发布问题就怀疑同样的事情,这是因为这两个 $ne。 【参考方案1】:

你想在这里$nin

.find( "email":  "$nin": [ null, "" ]  )

问题是$ne 重复两次并覆盖。您可以使用$or,但$nin 更短:

给定:


    "_id" : ObjectId("59633c28f5f11516540d118e"),
    "a" : 1.0


    "_id" : ObjectId("59633c28f5f11516540d118f"),
    "a" : 1.0,
    "email" : ""


    "_id" : ObjectId("59633c28f5f11516540d1190"),
    "a" : 1.0,
    "email" : null


    "_id" : ObjectId("59633c28f5f11516540d1191"),
    "a" : 1.0,
    "email" : "fred"

只是返回:


    "_id" : ObjectId("59633c28f5f11516540d1191"),
    "a" : 1.0,
    "email" : "fred"

当你实际测试一个值时,你也不需要$exists。它已经暗示它确实“存在”。

【讨论】:

以上是关于查询不等于 null 或空的地方的主要内容,如果未能解决你的问题,请参考以下文章

展平表中可能为 NULL 或空的数组

TP测试查询数据库字段为null或空的字段

TP测试查询数据库字段为null或空的字段

TP测试查询数据库字段为null或空的字段

mybatis中是否等于0或空

sql查询中有一列中有NULL的数据,如何判断不为空的时候才进行操作?