首页 > 解决方案 > 在 mongoose 的聚合中填充数组的 id

问题描述

我遇到了一个问题,你能帮我填充消息数组 ID。

await Message.aggregate([
    { $match: { $and: [{ receiver }, { delivered: null }] } },
    {
        $group: {
            _id: { $switch: { branches: [{ case: { $eq: ['$sender', receiver] }, then: '$receiver' }], default: '$sender' } },
            receiver: { $last: '$receiver' },
            message: { $push: '$_id' },
        }
    },
    { $project: {message: 1, } },
    { $sort: { 'sent': -1 } }  ])

上面代码的结果是

{
"status": "success",
"syncat": "2021-10-31T04:13:39.935Z",
"data": [
    {
        "_id": "616b21735498275d803c7b09",
        "message": [
            "617cccf00ba86ff28c543475",
            "617ccd3b5375bafe008cec05",
            
        ]
    }
]}

我想从 Message 模块填充消息数组的每个 id。那应该看起来像

{
"status": "success",
"syncat": "2021-10-31T04:13:39.935Z",
"data": [
    {
        "_id": "617cccf00ba86ff28c543475",
        "message": [
                    {
                       //Message Data
                    {
                       //Message Data
                    }                
       ]
    }
]}

我为它制作的模块是用户和消息

标签: node.jsdatabasemongodbapimongoose

解决方案


用于$$ROOT_message: { $push: '$$ROOT' }


推荐阅读