node.js - 在 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
}
]
}
]}
我为它制作的模块是用户和消息
解决方案
用于$$ROOT
_message: { $push: '$$ROOT' }
推荐阅读
- css - 如何在 laravel 的 .css 文件中使用配置文件值
- javascript - 如何做减少,过滤和嵌套数组工作javascript
- java - 如何在服务层使用相同的方法模拟 dao 层?
- android - Flutter:任务':app:compileReleaseKotlin'的执行失败
- java - JHipster React 在另一个相关实体的详细信息屏幕中显示一个实体的列表
- ruby-on-rails - 在 Ruby 中将 XML 转换为 Qt 翻译的字符串 (.ts) 文件
- flutter - Flutter - 构建失败可能是由于插件中的 AndroidX 不兼容
- swift5 - 无法通过 Swift 中的 V2 API 在 LinkedIn 上进行文本共享
- ag-grid - 如何将总计放在 AG GRID 的顶部
- visual-studio - 如何通过 Bridge to Kubernetes 使用托管标识?