Javascript 计算唯一值​;在mongodb中以及与之关联的参数

Javascript 计算唯一值​;在mongodb中以及与之关联的参数,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我的数据库中的集合的结构如下 { _id: , itemNumber: 123452, value: 15, user: 'Mark'}, { _id: , itemNumber: 123452, value: 12, user: 'Tom'}, { _id: , itemNumber: 123452, value: 1, user: 'Mark'}, { _id: , itemNumber: 123452, value: 23, user: 'Tom'}, { _id: , itemNumbe

我的数据库中的集合的结构如下

{ _id: , itemNumber: 123452, value: 15, user: 'Mark'},
{ _id: , itemNumber: 123452, value: 12, user: 'Tom'},
{ _id: , itemNumber: 123452, value: 1, user: 'Mark'},
{ _id: , itemNumber: 123452, value: 23, user: 'Tom'},
{ _id: , itemNumber: 123452, value: 13, user: 'Daniel'},
{ _id: , itemNumber: 123452, value: 56, user: 'Mark'},
{ _id: , itemNumber: 123452, value: 13, user: 'Mark'},
我希望以这样一种方式查询数据库,即​​根据以下假设返回:

{user: Mark, sumValue: 85, amount: 4}
{user: Daniel, sumValue: 13, amount: 1}
{user: Tom, sumValue: 35, amount: 2}
最后,我想将这些数据传递到前面的渲染器。
我尝试了使用db.distinct进行查询,但不幸的是,到目前为止我正在学习node.js,因此我将非常感谢您的指导。

您需要在如下聚合阶段使用
$group

  • $group
    按名称获取每个用户的所有数据
  • 使用值创建字段
    sumValue
  • 使用
    $sum
    仅创建一个字段来获取计数
范例

db.collection.aggregate([
  {
    "$group": {
      "_id": "$user",
      "sumValue": {
        "$sum": "$value"
      },
      "amount": {
        "$sum": 1
      }
    }
  }
])