mongodb3.4字符类型的字段求和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb3.4字符类型的字段求和相关的知识,希望对你有一定的参考价值。

首先想到的是mongodb的聚合函数,具体操作如下:

表数据

db.test3.find(,content.targetCode:1,content.result:1)

mongodb3.4字符类型的字段求和_数据

使用聚合函数进行统计

db.test3.aggregate(
[
"$match":
"content.targetCode":patExam

,

"$group":
"_id": null,
"Total":
"$sum": "$content.result"



])

mongodb3.4字符类型的字段求和_数据_02

上面的结果为0,聚集函数无法对字符型的字段求和,要想求和有以下2个方案:

1.采用mapReduce(将字符串转换成浮点型)

var map = function()
emit(this.content.targetCode,this.content.result);


var reduce = function(key,values)
var cnt = 0.0;
values.forEach(function(val)cnt+=parseFloat(val););
return "sumAll":cnt;


db.test3.mapReduce(map,reduce,query:,out:res)

db.res.find()

mongodb3.4字符类型的字段求和_数据_03

统计完成后记得删除临时表res

db.res.drop()

2.修改原始数据将其由字符型改为浮点型

修改前的数据

mongodb3.4字符类型的字段求和_数据_04

修改后的数据

db.test3.find().forEach( function (x) x.content.result = parseFloat(x.content.result);db.test3.save(x);)

mongodb3.4字符类型的字段求和_聚合函数_05

此时在使用聚合函数统计

db.test3.aggregate(
[
"$match":
"content.targetCode":patExam

,

"$group":
"_id": null,
"Total":
"$sum": "$content.result"



])

mongodb3.4字符类型的字段求和_浮点型_06

以上是关于mongodb3.4字符类型的字段求和的主要内容,如果未能解决你的问题,请参考以下文章

stream流运算:求和(基本数据类型,BigDecimal),多字段乘积求和,提取对象属性集合

使用 ClickHouse 提取和求和字符串内的子字段的值

mongodb 3.4.2 InvalidIndexSpecificationOption 错误:字段“唯一”对于 _id 索引规范无效

centos7安装MongoDB3.4

sql实现多字段求和并查询

sqlserver根据某一个字段进行求和运算后去掉重复的数据