如何在Meteor集合中汇总属性的所有值?

时间:2013-04-04 13:55:36

标签: mongodb sum meteor

例如:

Object {_id: "9g9ySxozSWn1", name: "test1", price: 1}
Object {_id: "9g9ySxozSWn2", name: "test2", price: 2}
Object {_id: "9g9ySxozSWn3", name: "test3", price: 3}
Object {_id: "9g9ySxozSWn4", name: "test3", price: 6}
Object {_id: "9g9ySxozSWn5", name: "test3", price: 3}

总结所有价格的最佳方法是什么,例如名称是test3?

2 个答案:

答案 0 :(得分:15)

如果您不想使用下划线:

var total = 0;

MyCollection.find({name:"test3"}).map(function(doc) {
  total += doc.price;
});

答案 1 :(得分:2)

这是客户端吗?目前尚未直接支持聚合查询,即使使用聚合查询,最小化仍会以某种方式进行本地化地图缩减:

total = _.reduce(_.map(MyCollection.find({name:"test3"}).fetch(), 
                function(doc) {
                  //map
                  return doc.price
                }), 
                function(memo, num){ 
                  //reduce
                  return memo + num;
                });