Mongodb嵌套数组聚合

时间:2019-04-16 11:07:53

标签: mongodb

我的数据库中存在这种情况:

注意:所有ID由mongo自动生成。

酒店架构(为简便起见,我已删除了多余的字段)

hotel: Schema = 
    name: { type: String },
    rooms: [{ availabilityDates: [{ type: Date }] }]

酒店有一些房间,这些房间的空房日期各不相同。

订单架构

order: Schema 
    no: { type: String },
    hotels: [
        {
            hotel: { type: Schema.Types.ObjectId, ref: 'Hotels', required: true },
            rooms: [
                {
                    roomReferenceId: { type: String, required: true },
                    arrivalDate: { type: Date, required: true },
                    departureDate: { type: Date, required: true },
                }
            ]
        }
    ]

任何订单可以拥有一个或多个酒店。订单中的每个酒店都有带有参考ID和日期的房间阵列。

问题是: 如何实现对这些模式进行汇总并显示

的单个查询
  • 所有酒店,所有房间和空房日期
  • 如果预订了酒店的房间,请以某种方式显示预订的日期。

我愿意接受任何建议。我无法更改架构,因为它们是由外部承包商提供的。

在此先感谢您的帮助或提示。

1 个答案:

答案 0 :(得分:-1)

您可以在mongodb聚合管道中使用 $ lookup 并将两个集合加入单个查询中