mongodb中的求和问题

我有一个表,它的结构是 userid, type, class, amount

有两个语句不会写

1、求符合 userid = 5, type = 3, class = 8 的 amount 的和

目前我的做法是

let amountlist = await db.tablename.find({type: 3, class: 8}).then(amounts => {
    return amounts || [];
});
let allamount = 0;
amountlist.forEach(eachamount => {
    allamount += eachamount.amount;
});

这样写执行的效率有问题

2、列出所有用户(userid),条件是 type =3,class=8 的 amount 的和,这种不知道该怎么写。

请帮忙,多谢

阅读 2.1k
2 个回答

统计某个人:

db.mytable.aggregate([{$match:{userid:5, type:3, class:8 }},{$group : {_id : "$userid, count : {$sum : "$amount"}}}])

分组统计:

db.mytable.aggregate([{$group : {_id : "$userid, count : {$sum : "$amount"}}}])

随手写的不一定跑得过,可以参考aggregate的用法修改下

amount 的和:

db.tablename.aggregate([
  {$group: {
    _id: { userid: 5, type: 3, class: 8 }
    count : {$sum : "$amount"}
  }}
])

求所有用户 amount 的和:

db.tablename.aggregate([
  {$group: {
    _id: { type: 3, class: 8 }
    count : {$sum : "$amount"}
  }}
])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进