nosql--06MongoBD的高级查询

本文介绍了MongoDB的高级查询方法,包括数据查询、比较运算符、范围运算符、逻辑运算符、正则表达式、limit和skip的使用、自定义查询、投影、排序、统计个数以及消除重复项的操作。通过示例展示了如何查询特定条件的数据,如查询年龄在特定范围内的学生、按条件进行逻辑组合查询等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据查询

  • db.集合名.find({条件文档})
  • db.集合名.findOne({条件文档})只查询一个
  • db.集合名.find({条件文档}).pretty() 将结果格式化

比较运算符

  • 等于:默认判断没有运算符
  • 小于:$lt(less than)
  • 大于:$gt
  • 小于等于,大于等于: $ lte.$ gte
  • 不等于: $ne
db.stu.find({age:{$gte:18}})

范围运算符

使用$ in ,$ nin查询是否在某个范围内的,查询年龄为18.28的学生

db.stu.find({age:{$in:[18,28]}})

逻辑运算符

  • and:在json中写多个条件即可
DB.STU.find({age:{$gte:18},gender:true})
  • or:使用$or,值为数组,数组中每个元素为json
DB.STU.find({$or:[{age:{$gte:18},{gender:false}}]})
  • 查询年龄大于18或性别为男,并且姓名为zhang的
db.stu.find({$or:[{age:{$gt:18}},{gender:true}],name:"zhang"})

支持正则表达式

  • 使用//或$regex编写正则表达式

limit和skip

  • limit():读取制定数量的文档
  • skip():跳过制定数量的文档

自定义查询

  • 使用$where后面写一个函数,返回满足条件的数据,可以写js语句
  • 查询年龄大于30的学生
db.stu.find({$where:function(){
	return this.age>30
}})

投影

查询到的返回结果中,只选择必要的字段

db.stu.find({},{_id:0,name:1,gender:1})

表示不需要_id,需要name,gender

默认不显示,但是_id默认显示,所有如果想让它不显示需要指定

排序

按照性别降序,再按照年龄升序

db.stu.find().sort({gender:-1,age:1})

统计个数

db.stu.find({条件}).count()

消除重复

找年龄大于20的学生的家乡都在哪

db.stu.distinct("hometown",{age:{$gt:20}})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值