1.查询

2.排序查询

sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列

3.分页列表查询

skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit(),和命令编写顺序无关

4.比较查询

5.条件连接查询

and查询:查询没有被删除并且name为abc的数据

db.collections.find({isDeleted:1,"name":"abc"})

6.包含查询

7.统计查询

8.模糊查询,正则的复杂条件查询

9.查询ObjectId

db.collect.find({ "_id" : ObjectId("5326bfc0e6f780b21635248f") })

10.时间查询

今天用mongodb查昨天某个collection产生的记录数量,在mysq里面可以用between..and..或者>、>=、<=来查询指定的时间范围数据,但是mongodb有自己的语法。mongodb里比较,用“$gt"、"$gte"、"$lt"、"$lte"(分别对应">”、“>=”、"<"、"<=")
组合起来可以进行范围的查找。比如查昨天的,就可以用


db.CollectionAAA.find({ "CreateTime" :  {"$gte": ISODate("2017-04-20T00:00:00Z"),"$lt" : ISODate("2917-94-21T00:00:00Z") }} ).count()

其中“2017-04-20T00:00:00Z”表示mongdb存储的数据时间,“2017-04-20 00:00:00”


注意,开始的时候日期使用"2017-04-20"和"2017-04-21",但是返回结果为空,应该日期字段需要指定格式吧,看了下存在库里的数据为ISODate类型,所以直接写成ISODate的方式,结果就正常了。

10.时间查询和模糊查询

//项目信息维护
/*查看没有被删除,开始时间在"2019-08-01 00:00:00"-"2023-09-30 23:59:59",
结束时间在"2023-08-01 00:00:00"-"2023-09-30 23:59:59"
项目名称包含“测试”,的项目信息,根据开始时间倒序排列*/
//其中mongdb的时间是世界统一时间,是北京时间减去8小时

db.Item.find({isDeleted:1,
"startAt":{$lte:ISODate("2023-09-30T15:59:59Z"),$gte:ISODate("2023-07-31T16:00:00Z")},
"endAt":{$lte:ISODate("2023-09-30T15:59:59Z"),$gte:ISODate("2023-07-31T16:00:00Z")},
itemName:{$regex:/测试/}   //模糊查询
})
.sort({startAt:-1})

11.批量查询

和mysql使用in查询类似:

db.User.find({_id:{$in:["1617a3c0-1213-11ed-b08d-8139b5579ce4","36ebfde0-2761-11ed-84f6-b3db9952f5fd"]}})

//查询所有
db.accessToken.find({})   
  
//查询userid为1003的记录  
db.accessToken.find({userid:'1003'})  
  
//查询用户编号是1003的记录,但只最多返回符合条件的第一条记录,使用findOne 
db.accessToken.findOne({userid:'1003'})  

//投影查询(Projection Query):
//查询结果只显示 _id、userid、nickname :默认 _id 会显示
db.accessToken.find({userid:'1003'},{userid:1,nickname:1})
   
//查询结果只显示 、userid、nickname ,不显示 _id
db.accessToken.find({userid:'1003'},{userid:1,nickname:1,_id:0})
   
//查询所有数据,但只显示 _id、userid、nickname :
db.accessToken.find({},{userid:1,nickname:1})

//只显示allData包含的system_state包含的auto_state
db.run_data.find({},{"allData.system_state.auto_state":1})

//排序查询
//sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列
//对userid降序排列,并对likenum进行升序排列
db.accessToken.find({}).sort({userid:-1,likenum:1})
   
//分页列表查询
//可以使用limit()方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。

//如果你想返回指定条数的记录,可以在find方法后调用limit来返回结果,例如:
db.accessToken.find({}).limit(3)

//skip方法同样接受一个数字参数作为跳过的记录条数。(前N个不要),默认值是0
db.accessToken.find({}).skip(3)

//需求:每页2个,第二页开始:跳过前两条数据,接着值显示3和4条数据  
//第一页
db.comment.find().skip(0).limit(2)
//第二页
db.comment.find().skip(2).limit(2)
//第三页
db.comment.find().skip(4).limit(2)
//skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit(),和命令编写顺序无关
   
//比较查询
//<, <=, >, >= 这个操作符也是很常用的,格式如下:
// db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value
// db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value
// db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value
// db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value
// db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value
//示例:查询评论点赞数量大于700的记录
db.comment.find({likenum:{$gt:NumberInt(700)}})
  
//条件连接查询
//我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相 当于SQL的and) 格式为:
$and:[ { },{ },{ } ]
//查询评论集合中likenum大于等于700 并且小于2000的文档:
db.comment.find({$and:[{likenum:{$gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})

//如果两个以上条件之间是或者的关系,我们使用 操作符进行关联,与前面 and的使用方式相同 格式为:
$or:[ { },{ },{ } ]
//查询评论集合中userid为1003,或者点赞数小于1000的文档记录
db.comment.find({$or:[ {userid:"1003"} ,{likenum:{$lt:1000} }]})

//包含查询
//包含使用$in操作符。 示例:查询评论的集合中userid字段包含1003或1004的文档
db.comment.find({userid:{$in:["1003","1004"]}})   

//不包含使用$nin操作符。 示例:查询评论集合中userid字段不包含1003和1004的文档
db.comment.find({userid:{$nin:["1003","1004"]}})  
   
//包含查询
//包含使用$in操作符。 示例:查询评论的集合中userid字段包含1003或1004的文档
db.comment.find({userid:{$in:["1003","1004"]}})   

//不包含使用$nin操作符。 示例:查询评论集合中userid字段不包含1003和1004的文档
db.comment.find({userid:{$nin:["1003","1004"]}})  
   
//正则的复杂条件查询
//MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:
db.集合.find({字段:/正则表达式/})
//我要查询评论内容包含“开水”的所有文档,代码如下:
db.comment.find({content:/开水/})
//如果要查询评论的内容中以“专家”开头的,代码如下:
db.comment.find({content:/^专家/})


//项目信息维护
/*查看没有被删除,开始时间在"2019-08-01 00:00:00"-"2023-09-30 23:59:59",
结束时间在"2023-08-01 00:00:00"-"2023-09-30 23:59:59"
项目名称包含“测试”,的项目信息,根据开始时间倒序排列*/
//其中mongdb的时间是世界统一时间,是北京时间减去8小时
db.Item.find({isDeleted:1,
"startAt":{$lte:ISODate("2023-09-30T15:59:59Z"),$gte:ISODate("2023-07-31T16:00:00Z")},
"endAt":{$lte:ISODate("2023-09-30T15:59:59Z"),$gte:ISODate("2023-07-31T16:00:00Z")},
itemName:{$regex:/测试/}
})
.sort({startAt:-1})

//批量查询,查询id为:"1617a3c0-1213-11ed-b08d-8139b5579ce4"和"36ebfde0-2761-11ed-84f6-b3db9952f5fd"的数据
db.User.find({_id:{$in:["1617a3c0-1213-11ed-b08d-8139b5579ce4","36ebfde0-2761-11ed-84f6-b3db9952f5fd"]}})
   
   
   
   
   
   
   
   

单行注释://

多行注释:选中注释的内容:CTRL+/

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐