#node.js #mongodb #mongoose #aggregate
#node.js #mongodb #mongoose #агрегировать
Вопрос:
как я могу использовать значение поля в агрегации мангуста?
я пробовал с последней версией mongodb, mongoose.
Group.find({name:'1'},function(err,groups){
groups.forEach(function(g){
result=await People.countDocuments({group:g._id})
});
});
Я уже проверил, что «результат» этого кода равен 3, 5, 2
я хочу использовать агрегат
Group.aggregate()
.project({_id:true,name:true})
.addFields({numOfPeople: await People.countDocuments({group:this._id})});
вывод
[{name:'1',numOfPeople:0},
{name:'2',numOfPeople:0},
{name:'3',numOfPeople:0}]
ожидается
[{name:'1',numOfPeople:3},
{name:'2',numOfPeople:5},
{name:'3',numOfPeople:2}]
Ответ №1:
Вы должны использовать group by
db.groups.aggregate(
[
{
$group : {
_id : "$name",
numOfPeople: { $sum: 1 }
}
}
]
);