#mongodb #mongodb-query #aggregation-framework
#mongodb #mongodb-запрос #агрегация-фреймворк
Вопрос:
Я пытаюсь создать приложение, aggregation
которое возвращает поле (в документе) при выполнении двух условий, я делаю это на $project
этапе и попытался записать это следующим образом :
"conversionName" : { "$cond" : [ { "$and" : [ { "$eq" : [ "$webpage", "Product" ] }, { "$eq" : [ "$isConverted", true ] } ] }, "$conversion.name", 0 ] }
таким образом, если веб-страница является продуктом, а значение isConverted равно true, тогда оно показывает значение conversion.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
одобрением? Если нет — какой другой способ может удовлетворить мои потребности?
Ответ №1:
В моем проекте это отлично работает таким образом :
$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,
},