javascript - 如何使用mongoose计算mongodb集合文档中的字段总和

标签 javascript node.js mongodb mongoose

我想从 mongodb 文档中计算员工积分。

我在员工积分收藏中的文件如下

[
    {
        "EmployeeID": "Cust0001",
        "Point": 1,
    },
    {
        "EmployeeID": "Cust0002",
        "Point": 2,
    },
    {
        "EmployeeID": "Cust0003",
        "Point": 1,
    },
    {
        "EmployeeID": "Cust0001",
        "Point": 5,
    },
    {
        "EmployeeID": "Cust0001",
        "Point": 2,
    }
]

预期结果

[
    {
        "EmployeeID": "Cust0001",
        "Total_Points": 8
    },
    {
        "EmployeeID": "Cust0002",
        "Total_Points": 2
    },
    {
        "EmployeeID": "Cust0003",
        "Total_Points": 1
    }
]

从 mongodb 获取总分输出的最佳和最优化方法是什么。

我在我的项目中使用 mongoose mongodb 连接。

我可以使用 for 循环操作数据,但它似乎相当低效。

提前致谢。

欢迎提出意见。

最佳答案

您需要使用 $sum在这里两次......一次作为$group的“累加器”阶段和一个用于求和 Points

db.collection.aggregate([
  { "$group": {
    "_id": "$EmployeeID",
    "Point": {
      "$sum": {
        "$sum": "$Point"
      }
    }
  }},
  { "$project": {
    "EmployeeID": "$_id",
    "Point": "$Point",
    "_id": 0
  }}
])

输出

[
  {
    "EmployeeID": "Cust0003",
    "Point": 1
  },
  {
    "EmployeeID": "Cust0002",
    "Point": 2
  },
  {
    "EmployeeID": "Cust0001",
    "Point": 8
  }
]

查一下here

关于javascript - 如何使用mongoose计算mongodb集合文档中的字段总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50961914/

相关文章:

javascript - 查询 |单击 | 添加/删除类最佳实践

Node.js + Express + Handlebars.js + 局部 View

node.js - 使用 OAuth2 保护 nodejs/sailsjs API

javascript - 使用 mongodb 操作运行 for-in 循环

javascript - DOMDocument - 从正文中获取脚本文本

javascript - 超链接标签 "<a>"在 html 页面中不起作用

node.js - 使用 NodeJS 的 AWS Lambda 函数中的 AWS-SDK 加载错误

python - 如何使用pymongo在已经初始化的副本集中添加一个新节点?

php - 用于运输路线的 MySQL 数据库模式,避免了复杂性

javascript - 在完成 javascript css 后重复动画