这是我的样本:
两个简单的Mongoose模型:
我的目标是输出类似的内容:
[
{
"notes_count": 7,
"title": "first notebook",
"id": "5585a9ffc9506e64192858c1"
},
{
"notes_count": 3,
"title": "second notebook",
"id": "558ab637cab9a2b01dae9a97"
}
]
在Note模型上使用聚合和填充,如下所示:
Note.aggregate(
[{
"$group": {
"_id": "$notebook",
"notes_count": {
"$sum": 1
}
}
}, {
"$project": {
"notebook": "$_id",
"notes_count": "$notes_count",
}
}]
给了我这样的结果:
{
"_id": "5585a9ffc9506e64192858c1",
"notes_count": 7,
"notebook": {
"_id": "5585a9ffc9506e64192858c1",
"title": "un carnet court",
"__v": 0
}
}
忘记__v和_id字段,使用修改后的toJSON函数很容易处理。
但是在这个函数中,doc和ret params都不允许我访问计算的notes_count值。
显然,我可以在路由处理程序中管理它(解析结果并重新创建将返回的数据)但是,有没有正确的方法来使用mongoose?
答案 0 :(得分:1)
您无法使用聚合方法进行更新。如您所知,您需要使用聚合构造函数的输出来更新相关文档。
由于Mongoose聚合方法将返回普通对象的集合,您可以遍历此方法并使用_id
字段(或类似字段)来更新文档。