如何找到一个集合中的项目的总数是多少?猫鼬

时间:2021-01-07 09:53:58

标签: node.js mongoose

我收藏有100件物品,每件物品都有一个“钱”字段,我需要从所有人那里得到钱的总和,最好没有拐杖。我不知道该怎么做了。

const allMoney = async () => {
    let count = 0;
    await User.find({}).sort({ money: -1 }).forEach(plr => { count+=plr.money });
    return count;
}

“用户是我的模型”

2 个答案:

答案 0 :(得分:0)

您可以将聚合与一个组一起使用,这将很容易为您获取总金额。

参考:https://docs.mongodb.com/manual/reference/operator/aggregation/group/ 以获得更多说明。

const allMoney = async () => {
    var aggregate = Scheme.aggregate()
    aggregate.group({
      _id: null,
      totalMoney: {$sum: '$money'}
    )}
    aggregate.exec(function(err, result) {
      if (err) return err;
      return result;
    });
}

答案 1 :(得分:0)

尝试使用猫鼬aggregation framework$group,并 $sum运营商,只是这样的:

# sample dataframe
            BOX DESCRIPTION
0   NEW STORE
1  BOXES STORE (1-1,999 SF) LOW RISK
2  BOXES (61-150) HIGH RISK
3  BOXES (0-30) MODERATE RISK
4  BOXES (151 + ) HIGH RISK
5  BOXES (151 + ) LOW RISK
6  BOXES (151 + ) MODERATE RISK
7  BOXES (31-60)  LOW RISK
8  BOXES (0-30)  HIGH RISK
9  BOXES (31-60) HIGH RISK
10 BOXES (0-30)  LOW RISK
11 BOXES (2,000+ SF) MODERATE RISK
12 BOXES (2,000+ SF) LOW RISK
13 BOXES (2,000+ SF) HIGH RISK
14 BOXES STORE (1-1,999 SF) MODERATE
15 BOXES STORE (1-1,999 SF) HIGH RISK
16 BOXES (61-150) LOW RISK
17 BOXES (61-150) MODERATE RISK
18 BOXES (31-60) MODERATE RISK

EXPECTED OUT

            BOX DESCRIPTION
0   NEW STORE                      BOXES
1  BOXES STORE LOW RISK            (1,1-999 SF)
2  BOXES  LOW RISK                 (61 - 150)
3  BOXES (0-30) MODERATE RISK
4  BOXES (151 + ) HIGH RISK
5  BOXES (151 + ) LOW RISK
6  BOXES (151 + ) MODERATE RISK
7  BOXES (31-60)  LOW RISK

_id:空表达是必要的,因为一组规范必须强制性地包括它。否则猫鼬会抛出错误。