【发布时间】:2021-10-04 15:04:11
【问题描述】:
假设在 $facet 阶段之后我有一个包含两个数组的结果:roomInfo 和 hotelInfo。
看起来像这样:
{
"roomInfo": [
{
_id: 'ab1',
booked: 3
},
{
_id: 'ab2',
booked: 1
}
],
"hotelInfo": [
{
name: 'Radison Blue',
roomDetails: [
{
_id: 'ab1',
roomCount: 5
},
{
_id: 'xy1',
roomCount: 5
}
]
},
{
name: 'Intercontinental',
roomDetails: [
{
_id: 'ab2',
roomCount: 5
}
]
}
]
};
预期结果
我想要这样的输出:
[
{
name: 'Radison Blue',
roomDetails: [
{
_id: 'ab1',
roomCount: 5,
booked: 3
},
{
_id: 'xy1',
roomCount: 5,
booked: 0
}
]
},
{
name: 'Intercontinental',
roomDetails: [
{
_id: 'ab2',
roomCount: 5,
booked: 1
}
]
}
];
基本上,将 roomInfo 中的 booked 属性添加到 hotelInfo 的 roomDetails 字段中,然后匹配它们的 id .
- 此外,在得到上述输出结果后,我想排除所有房间(不是单个房间)都具有字段值 roomCount 和 booked的那些酒店> 相等。我想在聚合管道阶段执行此操作,因为稍后我将不得不处理 $skip 和 $limit。
如何实现这些用例?
谢谢!
【问题讨论】:
标签: mongodb merge mongodb-query aggregation-framework aggregation