Mongodb 求和

有两种命令模式

1.

db.houseInfo.aggregate([  
    { $match : { "province" : "天津"}},  
    { $group : { _id : "$province", num_tutorial : {$sum : "$valuationPrice"} }}  
]); 

$match 后面写的是查询条件

$group后面写的是查询的字段,_id 指定的是province字段,num_tutorial 是对valuationPrice字段的求和。

返回结果形式

{
    "_id" : "天津",
    "num_tutorial" : 0
}

我在使用的时候遇到一个问题,mongodb中valuationPrice存储的类型是string,所以求和出来结果0,在不改变原有的数据类型的情况下,改用下面这种方法。

2.

db.runCommand({"group":{  
    "ns":"houseInfo",  
    "key":"beginTime",  
    "initial":{"total":0},  
    "$reduce" : function(doc,prev){  
        prev.total += parseFloat(doc.valuationPrice);  
    },  
    "condition":{"beginTime":{$regex: '^201705.*$', $options:'i'}}}  
}}); 

ns 为collection的名称

initial初始化total变量的值为0

$reduce 后面写的是计算的函数,这种利用parseFloat()函数将字符串转换为浮点型。

condition后面为查询条件.

返回结果形式

/* 1 */
{
    "retval" : [ 
        {
            "total" : 15304977820.93
        }
    ],
    "count" : NumberLong(3301),
    "keys" : NumberLong(1),
    "ok" : 1.0
}

 

转载于:https://my.oschina.net/xqysun/blog/920457

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值