как я могу использовать значение поля в агрегации мангуста? (nodejs)

#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 }
        }
      }
   ]
);