如何在猫鼬聚合中使用字段值? (节点)

Posted

技术标签:

【中文标题】如何在猫鼬聚合中使用字段值? (节点)【英文标题】:how can i use value of field in mongoose aggregation? (nodejs) 【发布时间】:2019-09-06 19:06:41 【问题描述】:

如何在 mongoose 聚合中使用字段值?

我尝试使用最新版本的 mongodb,猫鼬。

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

【讨论】:

以上是关于如何在猫鼬聚合中使用字段值? (节点)的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中使用聚合

如何在猫鼬模型中自动增加字段值[重复]

如何使用聚合在猫鼬中对文档数组进行分页?

在猫鼬聚合框架中按日期排序

在猫鼬中,如果我正在创建一个包含 4 个字段的模式。但我只保存两个字段的值。如何更新未给出的字段值?

如何在猫鼬的 document.save() 回调中隐藏字段?