агрегация базы данных mongo с возвращаемым значением $ cond из поля - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь получить aggregation, который возвращает поле (в документе), если выполнены два условия, Я делаю это на $project этапе и попытался написать это следующим образом:

"conversionName" : { "$cond" : [ { "$and" : [ { "$eq" : [ "$webpage", "Product" ] }, { "$eq" : [ "$isConverted", true ] } ] }, "$conversion.name", 0 ] }

, поэтому, если веб-страница имеет значение Product, а isConverted имеет значение true, тогда в этом документе будет отображаться значение translation.name.

The current aggregation fails due to :  "The $cond accumulator is a unary operator' on server main-shard-00-00-mhxad.gcp.mongodb.net:27017. "

Другие части агрегатов работают отлично.

Каким образом я могу вернуть значение с $cond commend? Если нет - какой другой способ может удовлетворить мои потребности?

1 Ответ

0 голосов
/ 22 марта 2019

В моем проекте все работает отлично:

$cond: {
  if: {
    $and: [
      { "$eq" : [ "$webpage", "Product" ] },
      { "$eq" : [ "$isConverted", true ] },
    ],
  },
  then: "$conversion.name",
  else: 0,
},

Если это не работает (и я не понимаю, почему это не так) then является выражением и может быть другим $cond:

$cond: {
  if: { "$eq" : [ "$webpage", "Product" ] },
  then: {$cond: {if: { "$eq" : [ "$isConverted", true ] }, then: "$conversion.name", else: 0},
  else: 0,
},
...