在 mongoose 的聚合中填充数组的 id

Posted

技术标签:

【中文标题】在 mongoose 的聚合中填充数组的 id【英文标题】:Populate id of array in aggregation in mongoose 【发布时间】:2021-12-15 10:05:06 【问题描述】:

我遇到了一个问题,请你帮我填充消息数组 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
                                    
       ]
    
]

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

【问题讨论】:

你应该看看这个docs.mongodb.com/manual/reference/operator/aggregation/lookup 【参考方案1】:

message: $push: '$$ROOT' 中使用$$ROOT

【讨论】:

以上是关于在 mongoose 的聚合中填充数组的 id的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 虚拟填充和聚合

与 mongoDb 和 mongoose 聚合后填充单个 ObjectId 引用

使用 mongoose 聚合填充值

在 Mongoose 中填充包含 ref 的数组数组

如何在 Mongoose 中搜索填充数组 [包含 ref 的数组]

在数组中填充有限数量的项目,但保持数组长度 - mongoose