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