我正在尝试查找电子邮件所在的所有文档。
我正在尝试以下查找查询:
{ "email": {$exists:true, $ne:null, $ne:""}}
我仍然收到电子邮件为null
的文件。
谁能告诉我我做错了什么?
答案 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
。它已经暗示“确实存在”。