假设在$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的ID后,将roomInfo中的预订属性添加到hotelInfo的roomDetails字段中。
如何实现这些用例?
谢谢
基本上,该方法将迭代酒店并相应地匹配每个房间,下面是一个快速工作代码示例:
db.collection.aggregate([
{
$unwind: "$hotelInfo"
},
{
$project: {
name: "$hotelInfo.name",
"roomDetails": {
$filter: {
input: {
$map: {
input: "$hotelInfo.roomDetails",
as: "info",
in: {
"$mergeObjects": [
"$$info",
{
"$arrayElemAt": [
{
$filter: {
input: "$roomInfo",
as: "room",
cond: {
$eq: [
"$$room._id",
"$$info._id"
]
}
}
},
0
]
}
]
}
}
},
as: "proccessedInfo",
cond: {
$ne: [
"$$proccessedInfo.roomCount",
"$$proccessedInfo.booked"
]
}
}
}
}
}
])
蒙哥游乐场
话虽如此,你提到你想在将来打电话。当前的方法似乎不可伸缩,因为这些是“真实数据点”,也就是酒店。如果您的规模有一定的限制(不超过数千家酒店),那就好了。但如果不是这样,我建议你问另一个关于整个管道的问题,这样我们可以调整它以更好地工作。
我需要结合两个反应性出版商的结果——Mono和Flux。我尝试使用和函数来实现这一点,但我无法满足两个特定条件: 结果包含的元素应与通量发射的元素一样多,但相应的Mono源只应调用一次(仅此条件可通过实现) 当通量为空时,链应在不等待单一元素的情况下完成 第一个条件的解决方案出现在结合单声道和通量条目中(粘贴在下面)。但是我无法在不阻塞链的情况下实现第二个条件——这是我想避免的。
是否有tar命令来排除子目录,但包括文件夹根目录中的每个文件,然后将它们放在特定路径上? 我想省略每个子目录,只保留文件的最大最小深度= 1。我尝试了以下方法,但不起作用:
问题内容: 我目前有一个PdfReader和一个PdfStamper,我正在用它们填充acrofields。现在,我必须将另一张pdf复制到我一直填写的表格的末尾,当我这样做时,我会在新表格上丢失acrofield。这是代码。 我创建原始文档的方式是这样的。 有没有一种方法可以使用第一段代码合并并将两个acrofield合并在一起? 问题答案: 根据您的确切需求,可能会出现不同的情况,但是无论如何
我想只从我的两个对象数组和中得到那些符合标准的子文档。即使我已经找到了这个stackoverflow答案#2(根据标准查找猫鼬子文档),它对我来说并不像期望的那样工作,或者我错过了一些东西。 我的文档如下所示: 它将在和中打印项目及其所有子文档。但是,我只想获取与给定上载id匹配的子文档。我做错了什么? 编辑:这个问题是指用猫鼬来解决它。我不能在Mongoose中使用这个问题的集合语句(只检索Mo
我需要使用set()和{mer: true}将文档推送到我的Firebase FiRecovery数据库。我不能使用update(),因为我不能保证文档事先存在。 如果我使用角度 我尝试在Python中做同样的事情: 但我得到了一个错误: ValueError("无效的合并路径:{}". form(merge_path))ValueError:无效的合并路径: FieldPath('合并') 删除
我想从ElasticSearch的结果文档中排除一个字段。我浏览了ElasticSearch.org的这个文档http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html但当我尝试时,这不起作用。我在SO上看到了同样的问题。有没有办法在Elasticsearch查询中