【问题标题】:Using $exists with $redact with mongo aggregate?将 $exists 与 $redact 与 mongo 聚合一起使用?
【发布时间】:2016-02-10 22:21:46
【问题描述】:

我正在使用 $redact 运算符:

{ $redact: {
    $cond: {
        "if": {
            "$lt": [ "$number1", "$number2" ],
        },
        "then": "$$KEEP",
        "else": "$$PRUNE"
    }
}}

我想$and: [{$lt:["$number1, $number2"]}, {$exists:[$number3, 1]}],但我无法获取 $exist,或检查 null。

【问题讨论】:

  • 只要使用$match

标签: mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

您想要$ifNull,因为它是“某种”等价物,并添加了在字段不存在的情况下返回替代值的附加功能:

{ "$redact": {
    "$cond": {
        "if": {
            "$and": [
               { "$lt": [ "$number1", "$number2" ] },
               { "$ifNull": [ "$number3", false ] }
            ]
        },
        "then": "$$KEEP",
        "else": "$$PRUNE"
    }
}}

所以如果字段存在,则返回该字段的值,这与说true基本相同(当然除非它的值实际上是false,在这种情况下,用$cond包装),或者返回作为false 提供的备用。

【讨论】:

  • 不存在怎么办?如果我希望它在 $eq 为 null 时返回 true,如果它确实存在则返回 false。
  • @CSharpAtl 这就是$ifNull 所做的。正如我所说,如果该值不是来自正返回的“真实”,则将其包装在 $cond$eq 中,以便返回的等于 null 值发出 true
  • 我只能 $not 它。谢谢。
猜你喜欢
  • 2017-10-12
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多