MongoDB文档的查找操作

本文介绍MongoDB中的查询操作,包括find和findOne函数的使用方法,以及各种查询条件的设定方式,如比较操作符和逻辑操作符的应用。

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

  • 查找操作
1.db.collection.find(query,field)
	功能:查找文档
	参数:query 查找条件,相当于where子句
		  field 查找的域
	返回值:查找到的所有文档
	#query:以键值对的方式传递参数,如果是空或{}表示查找所有内容
	e.g: db.test.find({sex:'w'})
	#field:以键值对的方式给出要查找(不查找)的域,以域名为键,以0,1为值分别表示不查找和查找

* 查找集合的所有内容
	db.collection.find()
* 如果某一个或者多个域设置为0,表示这些域不查找,其他域均查找
* 如果某一个或多个域设置为1,表示这些域查找,其他域均不查找
* _id除非设置为0,否则均会查找
* 除_id域其他域不能有的设置1有的设置0
 
 e.g 查找结果只有name域
 	db.class0.find({sex:'w'},{_id:0,name:1})

2.findOne(query,field)
	功能:查找第一条符合条件的文档
	参数:同find
	返回值:返回查找到的文档


  • query更多的筛选用法
    操作符:使用$符号注明的一个特殊字符串,表达一定的含义,比如$lt表示小于

  • 比较操作符:

$eq		等于		==		
db.class0.find({age:{$eq:18}},{_id:0})  等价于 db.class0.find({sex:18},{_id:0})

$lt		小于		<
db.class0.find({age:{$lt:18}},{_id:0})
* 在mongodb中字符串可以比较大小

$lte	小于等于		<=
db.class0.find({age:{$lte:18}},{_id:0})
db.class0.find({age:{$gt:16,$lt:19},{_id:0}) # 大于16,小于19
*在mongodb中所有的{} [] 中都可以写多个条件。但根据参数的不同表达的意思不一样

$gte	大于等于		>=
db.class0.find({age:{$gte:18},{_id:0})

$ne 	不等于		!=
db.class0.find({age:{$ne:19},{_id:0})
db.class0.find({age:{$ne:19},sex:{$ne:'w'}},{_id:0})
* 使用ne查找也会找到该域不存在的文档

$in		包含		
db.class0.find({age:{$in:[19,29,39]},sex:'w'},{_id:0}) # 找到年龄在19、29、39的女性

$nin	不包含		
db.class0.find({age:{$nin:[17,18,19]}}) # 找到年龄不为17,18,19的数据

  • 逻辑操作符
$and	
1.在query中如果写多个条件,默认即为and
e.g:
	db.class0.find({age:{$ne:19},sex:{$ne:'w'}},{_id:0})

2.逻辑与 $and:[{},{}]    条件在中括号中括起来
db.class0.find({$and:[{age:{$lt:18}},{sex:'m'}]},{_id:0})

$or 逻辑或
e.g 找到年龄小于18岁或者性别为女的数据
db.class0.find({$or:[{age:{$lt:18}},{sex:'w'}]},{_id:0})

$not 逻辑非 类似与 $ne
db.class0.find({sex:{$not:{$eq:'m'}}},{_id:0})
db.class0.find({sex:{$ne:'m'}},{_id:0})
e.g 年龄不小于18的
db.class0.find({age:{$not:{$lt:18}}},{_id:0})

$nor == not (a or b)  == (not a) and (not b)
# 得到大于等于18的女性
db.class0.find({$nor:[{sex:'w'},{age:{$lt:18}}]})
# 姓名不能小于lucy年龄不能大于18
db.class0.find({$nor:[{name:{$lt:'Lucy'}},{age:{$gt:18}}]},{_id:0})

* 单目运算符为{} 双目运算符为[]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值