【发布时间】:2020-11-21 20:36:01
【问题描述】:
假设我在另一个名为“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
}
}
]
谁能告诉我为什么这不起作用。再次,我很抱歉我不得不以某种方式简化它。如果不清楚,我可以尝试使其更易于理解。
【问题讨论】:
-
@varman 好的,我更改了脚本,我相信这次它不应该工作,因为它在一个数组中?能否请你确认?谢谢你看这个顺便说一句。
-
当您发布问题时,请仔细检查您是否包含了其他人理解的所有内容。请发布一些示例数据(两个集合)
-
@PatrickAdjei 您的预期结果是什么?你能补充你的问题吗?
-
@verman 请说明您需要什么。我很乐意提供。问题一开始提供的数据还不够吗?我尽量保持简短。
标签: javascript node.js mongodb mongoose mongodb-query