Предположим, у меня есть следующие данные в другой коллекции под названием 'Collection1'
userID: "1"
container:[
{"item" : "false", "price" : NumberDecimal("80"), "sizes" : "S", "arrayIndex" : NumberLong(0) }
{"item" : "false", "price" : NumberDecimal("80"), "sizes" : "M", "arrayIndex" : NumberLong(1) }
{"item" : "true", "price" : NumberDecimal("80"), "sizes" : "L", "arrayIndex" : NumberLong(2) }
]
Я присоединяю 'Collection1' к моему основному запросу следующим образом (перед объединением выполняется много шагов, и я хочу чтобы упростить это)
{$lookup:{
from:'Collection1',
localField:'result',
foreignField:'userID',
as:'photos'
}},
{$unwind:{
path:'$photos',
preserveNullAndEmptyArrays:true
}},
До сих пор все было хорошо, пока я не сделал проект.
{$project:
{'photo':
{$cond:{
if:{$eq:['$photos.container.item',false]},
then:'$photos.container.price',
else:null
}
}
}},
Работает проецирование любого элемента без условия. Однако я также делаю проекцию с другим условием, и здесь нет никаких проблем.
Ожидаемый результат будет
[
{
otherElement:....
photos:{
price:80
}
}
]
Кто-нибудь может сказать мне, почему это не работает. Опять же, мне очень жаль, что мне пришлось как-то это упростить. Если это непонятно, я могу попытаться сделать его более понятным.