db.集合名称.find()
db.集合名称.findOne()
query:包裹查询条件
projection:包裹指定返回字段
db.Order.find( { "activityId": 62 } )
db.Order.find( { "activityId": { $gt: 60 } } )
db.Order.find( { "activityId": { $gte: 60 } } )
db.Order.find( { "activityId": { $lt: 60 } } )
db.Order.find( { "activityId": { $lte: 60 } } )
db.Order.find( { "activityId": { $ne: 62 } } )
db.Order.find( { "activityId": { $in: [62,57] } } )
db.Order.find( { "activityId": 57,"mobile":"18578603549" } )
db.Order.find( { $or: [ { "activityId": 57 }, { "mobile": "18024523131" } ] } )
db.GroupBookingTaskMongo.find({ $and: [{ "activityId": { $gt: 57 } }, { "mobile": "18024523131" }], $or: [{ "orderNo": "30122021113000003583419257" }] })
db.GroupBookingTaskDetailMongo.distinct("mobile",{ "taskId":89 })
db.GroupBookingTaskDetailMongo.find( { "taskId":89 } ).skip(3).limit(10)//跳过前3条数据,取10条数据
pipeline:管道,常用关键字有:$match、$group、$project、$sort,可实现分组、统计、排序等复杂查询
最好一步步执行,执行完第一步看会得到什么结果,再根据该结果补充下一个脚本
思路:
1、先按条件查询$match
2、按字段分组$group
3、要显示哪些字段$project
db.Task.aggregate([ { $match:{//条件查询 "validFlag":1, "newFlag":0 } }, { $group:{//分组 _id:{//先按taskId分组,再按mobile分组 "taskId":"$taskId", "mobile":"$mobile" }, count:{$sum:1} } }, { $project:{//显示哪些字段,$_id表示前面的查询结果中会输出$_id的集合 "_id":0, "taskId":"$_id.taskId", "mobile":"$_id.mobile", "count":"$count" } }, { $sort:{//排序 taskId:-1 } } ])
思路:
1、先按条件查询$match
2、按taskId和号码分组$group
3、要展示哪些字段$project
4、再按taskId分组$group得到人数
5、要展示哪些字段$project
db.Task.aggregate([ { $match:{//条件查询 "validFlag":1, "newFlag":0 } }, { $group:{ _id:{ taskId:"$taskId", mobile:"$mobile" }, count:{$sum:1} } }, { $project:{ _id:0, taskId:"$_id.taskId", mobile:"$_id.mobile", count:"$count" } }, { $group:{ _id:{ taskId:"$taskId" }, count:{$sum:1} } }, { $project:{ _id:0, taskId:"$_id.taskId", userCount:"$count" } } ])
db.Task.aggregate([ { $lookup:{//左连接 from:"TaskDetail",//关联Task表 localField:"taskId",//Task表关联的字段 foreignField:"_id",//TaskDetail表关联的字段 as:"result"//返回数据所在的属性名称 } }, { $unwind:"$taskDetails"//将数组展开 } ])