MongoDb:
本地中导出mongodb的数据到本地(保存为csv文件)
mongoexport -d 数据库名称 -c 集合名称 -f time,user,ips,traffic(-f指查询的字段) --csv -o ./文件名.csv
按照 name 分组 得到 age 的总合,即每name的age之和
db.getCollection('test').aggregate([{$group : {_id : "$name", sum : {$sum : '$age'}}}])
aaa的指定时间段的traffic之和
match: 过滤条件
group: 分组条件(按什么分组, 如果写null,则不分组)
db.getCollection('test').aggregate([
{ $match :
{
'time':{$gte:ISODate("2020-12-07T00:00:00.000Z"), $lt:ISODate("2020-12-08T00:00:00.000Z")},
'app':{$eq:'aaa'}
}
},
{$group : {_id : null, sum : {$sum : '$traffic'}}}
])
当天的总量
db.getCollection('record_hourly').aggregate([
{ $match :
{
'time':{$gte:ISODate("2020-12-07T00:00:00.000Z"), $lt:ISODate("2020-12-08T00:00:00.000Z")},
}
},
{$group : {_id : null, sum : {$sum : '$traffic'}}}
])
总user数
db.getCollection('record_hourly').
distinct(
'user',{
'time':{$gte:ISODate("2020-12-07T00:00:00.000Z"), $lt:ISODate("2020-12-08T00:00:00.000Z")},
'app':{$eq:'wmh'}
})
使用量最大的前5位
写不写 $ 是两个概率,我这里写 $user
是表示使用 user 这个字段做分组条件
{$sum : '$bbb'}
表示使用 bbb 字段求和
{$sort:{sum:-1}}
表示按照sum的结果倒序
{$limit:5}
表示取前五个
db.getCollection('record_hourly').aggregate([
{ $match :
{
'time':{$gte:ISODate("2020-12-06T00:00:00.000Z"), $lt:ISODate("2020-12-07T00:00:00.000Z")},
'app':{$eq:'unknown'}
}
},
{$group : {_id : '$user', sum : {$sum : '$bbb'}}}
,
{$sort:{sum:-1}}
,
{$limit:5}
])