查询不等于null或空的地方

Shr*_*tra 13 mongoose mongodb mongodb-query

我试图找到电子邮件存在的所有文件.

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

{ "email": {$exists:true, $ne:null, $ne:""}}
Run Code Online (Sandbox Code Playgroud)

我仍然收到电子邮件所在的文件null.

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

Nei*_*unn 28

你想要$nin这里:

.find({ "email": { "$nin": [ null, "" ] } })
Run Code Online (Sandbox Code Playgroud)

问题是$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"
}
Run Code Online (Sandbox Code Playgroud)

回报:

{
    "_id" : ObjectId("59633c28f5f11516540d1191"),
    "a" : 1.0,
    "email" : "fred"
}
Run Code Online (Sandbox Code Playgroud)

$exists当你实际测试一个值时,你也不需要.它已经暗示是"存在".