【发布时间】:2020-03-18 16:24:30
【问题描述】:
如果 a 具有以下结构:
{
_id: 1,
name: 'a',
info: []
},
{
_id: 2,
name: 'b',
info: [
{
infoID: 100,
infoData: 'my info'
}
]
},
{
_id: 3,
name: 'c',
info: [
{
infoID: 200,
infoData: 'some info 200'
},
{
infoID: 300,
infoData: 'some info 300'
}
]
}
我需要以这种方式查询以获取显示 infoData 的 infoID 为 100 的文档,或者 如果 info 为空,或者包含 infoID 不同的子文档从 100 起。
也就是说,我想要以下输出:
{
_id: 1,
name: 'a',
infoData100: null
},
{
_id: 2,
name: 'b',
infoData100: 'my info'
},
{
_id: 3,
name: 'c',
infoData100: null
}
如果我 $unwind info 和 $match infoID: 100,我会丢失记录 1 和 3。
感谢您的回复。
【问题讨论】:
-
我认为你可以通过聚合来做到这一点,使用
$filter只选择你想要的数组元素,然后$cond在$project内设置最终值
标签: mongodb mongodb-query aggregation-framework