【发布时间】:2020-01-24 20:24:26
【问题描述】:
我已经看到很多关于 $lookup ObjectIds 数组聚合器的问题,但我似乎找不到任何关于 ObjectId 何时位于嵌入文档数组中的信息。
我在 mongodb 数据库中有以下文档:
_id: ObjectId('...')
Alarms: [
{
Gateway: ObjectId('...')
Port: 1
},
{
Gateway: ObjectId('...')
Port: 2
}
]
我想要以下:
_id: ObjectId('...')
Alarms [
{
Gateway: ...(Gateway Object),
Port: 1
},
{
Gateway: ...(Gateway Object),
Port: 2
}
]
我尝试了以下方法但没有成功:
$lookup: {
from: 'Gateway',
localField: 'Alarms.Gateway',
foreignField: '_id',
as: 'Alarms.Gateway'
}
但这给了我以下结果:
_id: ObjectId('...')
Alarms [
{
Gateway: {
...(Gateway Object)
}
Port: 1
}
]
【问题讨论】:
-
如果您在
Alarms中有第三个对象,如{ Gateway: ObjectId('...'), Port: 3 },但在Gateway中没有匹配的文档,会发生什么?您是否仍希望将其保留在Alarms数组中作为最终结果还是删除它并仅保留具有匹配项的对象? -
把
as: 'Alarms.Gateway'改成as: 'Alarms'
标签: arrays mongodb mongodb-query aggregation-framework