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

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

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

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

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

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

【问题讨论】:

  • 非常感谢老兄!有效。甚至我一发布问题就怀疑同样的事情,这是因为这两个 $ne。

标签: mongodb mongoose mongodb-query


【解决方案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。它已经暗示它确实“存在”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2011-03-13
    • 2020-05-29
    • 2011-03-31
    • 2021-06-23
    • 2010-10-12
    • 2019-03-24
    相关资源
    最近更新 更多