mongo使用示例

平时使用mongo不多,有些语句经常需要边查边写,纪录一些使用示例方便今后快速查找

  1. find使用
db.getCollection('memberLoginLogPo').find(
{memberLoginname:"zhoukun","memberId":{$ne:60},"loginResult":1},
{"memberId":1,"memberLoginname":1,"loginType":1}
)
.skip(1).limit(2)

find函数第一个参数为查询条件,第二个参数为要显示的字段。

db.getCollection('memberLoginLogPo').find({loginDate:{$gte:ISODate('2017-01-09 00:00:00'),$lte: ISODate('2018-01-011 00:00:00')},loginResult:1,memberLoginname:'tom1'}).count();
db.getCollection('memberWeekCountPo').aggregate(
{$match:{subjectId:142}},
{$project:{weekOfyear:1}},
{$group:{_id:"subjectId",doQuestionNum :{$sum:"doQuestionNum"},errorNume:{$sum:"errorNum"}}});
db.memberLoginLogPo.aggregate([

// 1.filter params todo:loginDate add index
{
$match: {
"loginDate": {
$gte: ISODate('2017-01-09 00:00:00'),
$lte: ISODate('2018-01-011 00:00:00')
},
"loginResult": 1,
}
},
// 2.filter field
{
$project: {
"memberId": 1,
"memberLoginname": 1,
"loginType": 1,
"loginIp": 1,
"loginDate": 1,
"loginResult": 1
}
},
// group by memberId and get member first login result
{
$group: {
_id: "$memberId",
memberLoginname: { $first: "$memberLoginname" },
loginType: { $first: "$loginType" },
loginDate: { $first: "$loginDate" },
loginIp: { $first: "$loginIp" },
loginResult: { $first: "$loginResult" },
}
}
])

//.match(qb.where("status").eq("A"))
//.project("gender _id")
//.unwind("$arrayField")
//.group({ _id: "", count: { $sum: 1 } })
//.sort("-count")
//.limit(5)

添加索引 background为true后台添加不影响查询

db.getCollection("memberLoginLogPo").createIndex({ "loginDate": 1 }, { "background": true })

多字段分组及按日期统计

db.memberExtPo.aggregate([
{$match:{"registerDate": {
$gte: ISODate('2018-04-01 00:00:00'),
$lte: ISODate('2018-06-30 23:59:59')
}
}
},

{
$project: {
"platformCode": 1,
"registerDate": 1,
"registerDate": 1,
"new_time_stamp" :{$substr :["$registerDate",0,7]}
}
},
{
$group: {
_id: {"platformCode":"$platformCode","registerDate":"$new_time_stamp"},
platformcode: { $first: "$platformCode" },
memberNum: { $sum:1}
}
}
])

日期格式为“yyyy-MM-dd hh:mm:ss” $substr :[“$registerDate”,0,7]  按月统计,subStr函数截取出前七位到月字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值