一.条件查询
降序计数:-1
db.ngx.app.api.find().sort({createdTime:-1}).count()
模糊查询: like %M1E%
db.ngx.app.user.find({useragentOriginal:{$regex:/M1E/}})
范围查询: >= and <=
db.ngx.app.user.find({sysErrorCount:{gte:0,lte:10}}
转换成json数组
db.ngx.app.user.find({ip:"27.194.14.162"},{"epoch":3825}).toArray()
多条件查询 and
db.ngx.app.user.find({ip:"27.194.14.162","epoch":3825})
多条件查询 or
db.ngx.app.user.find({ip:"27.194.14.162"},{"epoch":3825})
根据某个字段进行查询: userid !=""
db.ngx.offline.usertrajectory.find({"userid":{$ne:""}}).sort({"createdTime" :-1})
二.条件删除:
db.ngx.offline.usertrajectory.remove({"createdTime":{$gt:new Date("2018-05-26")}})
三.聚合操作
1.按照日期返回,匹配数据集合,然后根据year,month,进行聚合统计
db.shopprilegerecoding.aggregate([
{$match :{$and:[{createdTime:{'$gt':new Date("2019-01-01")}},{createdTime:{'$lt':new Date("2018-12-31")}}]} },
{$group :
{
_id : {
year:{$year:"$createtime"},
month:{$month:"$createtime"},
},
num_tutorial : {$count : "$reqCount"}
}
}
])
2.根据reqCount值,id值进行分组获取所有reqCount
db.ngx.app.api.aggregate([{$group : {_ id: "$reqCount", num_reqCount : {$sum : 1}}}])
db.ss.iss.user.aggregate(
{ $project : {
nginxInTime :1,
reqCount
}});
3.统计一天的数据量:
use db
根据nginxTime进行分组(实际就一组),然后计算有多少个document,计算reqCount(每天有多少条记录)
r统计分析:
db.user.aggregate({$match:{"nginxInTime":"2018-06-20"}},{$project:{nginxInTime:1,reqCount:1}},{$group:{"_id":"nginxInTime",count:{$sum:1},reqCountSum:{$sum:"$reqCount"} }});
{ "_id" : "nginxInTime", "count" : 29316, "reqCountSum" : NumberLong(74616) }
4.统计的更细致:根据某个字段进行分组,然后进行行数统计,并对其他字段值进行累加统计
>db.ss.iss.api.aggregate(
{
$match:{"nginxInTime":"2018-06-20"} //过滤条件
},
{
$project:{nginxInTime:1,reqCount:1,bizErrorCount:1,sysErrorCount:1} //聚合前,进行数据列过滤,只要这些列,字段id自动保留
},
{
$group:{
"_id":"nginxInTime", //分组字段
count:{$sum:1},
reqCountSum:{$sum:"$reqCount"},
bizErrorCount:{$sum:"$bizErrorCount"},
sysErrorCount:{$sum:"$sysErrorCount"}
}
}
);