使用聚合填充嵌套字段

时间:2020-06-22 05:56:36

标签: node.js mongodb mongoose

我有几个收藏集:roomsmessagesusers。每个message文档都具有room属性,该属性是房间文档的ObjectId引用,还具有一个sender属性,该属性引用一个user文档。我试图将所有消息以及每个消息的发件人放在一个房间。我当前的代码如下:

Room.aggregate([
    {
        $match: { _id: new mongoose.Types.ObjectId('5ed4ffcdd13f45b4104a1669') },
    },
    {
        $lookup: {
            from: 'messages',
            localField: '_id',
            foreignField: 'room',
            as: 'messages',
        },
    },
    {
        $lookup: {
            from: 'users',
            localField: 'messages.sender',
            foreignField: '_id',
            as: 'messages.sender'
        }
    },
    {
        $unwind: '$messages.sender'
    },
    {
        $sort: { 'messages.createdAt': -1 },
    },
])

以上结果仅返回一个message文档,其中仅填充了sender,而message文档中未包含其他字段。

当我返回sender文档时,如何填充每一封邮件的room属性?

0 个答案:

没有答案
相关问题