查询不等于null或空

时间:2017-07-10 08:28:26

标签: mongodb mongoose mongodb-query

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

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

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

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

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

1 个答案:

答案 0 :(得分:22)

你想要$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。它已经暗示“确实存在”。