Почему я не могу использовать $ nin, $ существующие и т. Д. Внутри соответствия конвейера Монго? - PullRequest
0 голосов
/ 27 ноября 2018

Я посмотрел высоко и низко для этого ответа, и ничего не помогло.У меня есть конвейерный запрос с таким термином соответствия, как этот:

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

Внутри $ и у меня есть все виды условий, использующих $ eq, $ in, $ ne, $ gt, $ lt и т. Д.

Как бы я ни пытался, я не могу распознать, что существует $ nin или $.Я пытаюсь добавить термин, в котором я ищу ключ, который не существует, например:

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

Я продолжаю получать

MongoError: Нераспознанное выражение '$ Существует'

и

MongoError: Нераспознанное выражение '$ nin'

Может кто-нибудь помочь ??

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете использовать только операторы aggregation внутри $expr и $nin и $exists являются операторами запроса, а не aggregation.Используйте вышеприведенные условия вне выражения $expr.

Что-то вроде

{ "$match": {
  "key": { "$exists": true },
  "$expr": {
    "$and": [
      {...}, {...}
    ]
  }
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...