【问题标题】:Why can't I use $nin, $exists, etc. inside a Mongo pipeline match?为什么我不能在 Mongo 管道匹配中使用 $nin、$exists 等?
【发布时间】:2018-12-04 02:05:10
【问题描述】:

对于这个答案,我一直在寻找高低,但没有任何效果。我有一个管道查询,其匹配项如下:

$match: {
  $expr: {
    $and: [
      ....
    ]
  }
}

在 $and 里面我有各种各样的条件,使用 $eq、$in、$ne、$gt、$lt 等。

但是,我可能无法让它识别 $nin 或 $exists。我正在尝试添加一个词来搜索不存在的键,例如:

{ $exists: [ '$key', 0 ] }

我一直在努力

MongoError: 无法识别的表达式'$exists'

MongoError:无法识别的表达式“$nin”

谁能帮忙??

【问题讨论】:

  • 您只能在$expr 中使用聚合 运算符,而$nin$exists查询 运算符而不是聚合运算符。在$expr之外使用上述条件
  • 是的!!!谢谢。

标签: node.js mongodb aggregation-framework


【解决方案1】:

您只能在$expr 中使用aggregation 运算符,而$nin$exists 是查询运算符而不是aggregation。在$expr 表达式之外使用上述条件。

有点像

{ "$match": {
  "key": { "$exists": true },
  "$expr": {
    "$and": [
      {...}, {...}
    ]
  }
}}

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 2018-01-31
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    相关资源
    最近更新 更多