mongodb聚合

2019/05/22

插入数据 string和double两种类型

db.getCollection('test_water').insert({deviceId:"110",num:50.5});
db.getCollection('test_water').insert({deviceId:"110",num:20.5});
db.getCollection('test_water').insert({deviceId:"110",num:30.5});
db.getCollection('test_water').insert({deviceId:"120",num:"50.5"});
db.getCollection('test_water').insert({deviceId:"120",num:"20.5"});
db.getCollection('test_water').insert({deviceId:"120",num:"30.5"});

效果图:

聚合查询

db.getCollection('test_water').aggregate([{$group:{_id:"$deviceId",sum_num:{$sum:"$num"},avg_num:{$avg:"$num"},
max_num:{$max:"$num"},min_num:{$min:"$num"},first_num:{$first:"$num"},last_num:{$last:"$num"}}}]);

效果图:字符类型的聚合查不到sum和avg

数据类型转换 string转为double类型

Mongodb的类型转换

db.getCollection('test_water').find().forEach( function (x) {
  x.num = parseInt(x.num);
  db.getCollection('test_water').save(x);
});

聚合查询 效果图: