MongoDB 中如何对一个字段进行累加操作?

2014-04-30 16:00:35 +08:00
 kenneth
比如
第一天 ¥5
第二天 ¥5

我要求一共赚了多少钱 10
7502 次点击
所在节点    程序员
10 条回复
turing
2014-04-30 16:06:13 +08:00
搜索一下 $inc 操作符
liangdi
2014-04-30 16:07:44 +08:00
有$sum
kenneth
2014-04-30 16:11:28 +08:00
@turing $inc是可以增加和减少,但是我们累加求和。

@liangdi 你确定有这个操作符?
hydrazt
2014-04-30 16:12:40 +08:00
mapreduce
kenneth
2014-04-30 16:13:23 +08:00
@hydrazt 能否说说大概怎么搞?
hydrazt
2014-04-30 16:15:59 +08:00
turing
2014-04-30 16:21:12 +08:00
累加求和用 mapReduce

model.mapReduce({
map: function() {
emit(this.earn, 1)
},
reduce: function(key, values){
return Array.sum(values);
},
query: {
... // 查询参数
}
});

http://docs.mongodb.org/manual/core/map-reduce/
kenneth
2014-04-30 16:26:04 +08:00
@turing js高手,果然对Mongodb更好理解。我再学习一下。
wbean
2014-04-30 16:47:29 +08:00
mongo中简单的统计需求不用祭出mapreduce这种大杀器。
Aggregation就可以了。
通过一些基础管道操作,如$project,$match,$group,$limit,$skip,$sort 和 一些 常用表达式如$sum,$avg,$min,$max 等实现基础的统计需求

db.collection.aggregate(
[
$match:{}
$group:{$_id:"",total:{$sum:"$amount"}}
]
);
benleewindy
2014-05-01 10:23:59 +08:00
@turing Reduce本身就是对collection做迭代归并操作,肯定能满足,简单需求似乎过重。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/110654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX