首页 > 解决方案 > 在一个 mongodb 查询中使用两个 group by 来匹配预期结果

问题描述

我有两个文件(项目和房间),我想获得如下结构的数据:

SELECT date, items, room
FROM itemsDocs
JOIN roomDocs ON itemsDocs.room = roomDocs._id
group by room
group by item.date

这是我现在尝试的查询:

let agg=[
        { $lookup: { 
            from: 'item', 
            localField: '_id', 
            foreignField: 'room', 
            as: 'data' }},
        {
            $unwind: { path: "$item", preserveNullAndEmptyArrays: true }
        },
          {
            $sort:{
                date:1
            }
        },
        {$group:{
                _id: "$_id", 
            room: { $first: "$$ROOT" },
            },
        },
        {$project:{
            room:1,
            data:1,
        }}
    ]

此查询的结果是一组不同的房间,每个房间都有项目列表:

[
    {
     room: ...
     items: [...]
    },
    ...
]

预期结果 :

[
{
 date: ...
 room: ...
 items: [...]
},
...
]

如何使用 mongoDb 获得此结果?

提前致谢

标签: mongodbmongoosegroup-bymongodb-querydocument

解决方案


推荐阅读