MongoDB的查找操作

MongoDB的查找操作

find() / find0ne()

  格式:db.collection_name.find(query, field)

参数功能
collection_name要操作的数据名
query筛选条件,相当于SQL中的where子句
field显示的域, 0 表示显示, 1 表示不显示

1、field参数

db.py.find()   // select * from py
	{
		"_id" : ObjectId("5c886f51dda44c12743c3caa"),
		"model" : "mate20",
		"price" : 4988
	},
	
db.py.find({},{_id:0}})  // select model,price from py
// 查询结果不显示 _id 的域
	{
		"model" : "mate20",
		"price" : 4988
	},
	
db.py.find({},{_id:0,model:1}})   // select model from py
// 查询结果不显示 _id 的域 只显示 model 域
	{
		"model" : "mate20"
	},

  注意:如果给某个域设置为1,则其他自动为0,两者不能混用,_id域特殊

db.py.find({},{model:1,price:0})   // 报错

2、 query参数

db.py.find({model:"mate20"},{_id:0})  
// select model,price from py where model="mate20"  
// 查询 model 为 mate20 的文档
	{
		"model" : "mate20",
		"price" : 4988
	},

db.py.find({model:"mate20",price:2888},{_id:0})  
// select model,price from py where model="mate20" and price=2888
// 查询 model 为 mate20 且 price 为 2888 的文档
	{
		"model" : "mate20",
		"price" : 2888
	},

3、比较运算符

符号功能
$eq等于 =
$lt小于 <
$lte小于等于 <=
$gt大于 >
$gte大于 >=
$ne不等于 !=
$in包含
$nin不包含
db.py.find({price:{$eq:2888}},{_id:0})  // 查找 price 等于 2888 的文档
db.py.find({price:{$lt:3000}},{_id:0})  // 查找 price 小于 3000 的文档
db.py.find({price:{$lte:3000}},{_id:0})  // 查找 price 小于等于 3000 的文档
db.py.find({price:{$in:[2888,4888]}},{_id:0}) // 查找 price 是 2888或4888 的文档

4、逻辑操作符

符号功能
$and
$or
$not
$nor既不也不
db.py.find({$and:[{model:"mate20"},{price:4988}]},{_id:0})  
// 查找 model 为 mate20 且 price 为 4988 的文档
db.py.find({price:{$gt:1000,$lt:3000}},{_id:0})  
// 查找 price 在 1000 到 3000 之间的文档

db.py.find({$or:[{model:"mate20"},{price:2988}]},{_id:0}) 
// 查找 model 为 mate20 或 price 为 2988 的文档
db.py.find({$or:[{price:{$lt:3000}},{price:{$gt:4000}}]},{_id:0})
// 查找 price 小于 3000 或 大于 4000 的文档

db.py.find({price:{$not:{$eq:4988}}},{_id:0})
// 查找 price 不小于 4988 的文档

db.py.find({$nor:[{model:"mate20"},{price:2988}]},{_id:0}) 
// 查找 model 不为 mate20  price 也不为 2988 的文档

5、数组查找操作符

符号功能
$all查找数组中全部包含的文档
$size根据数组的项数查找文档
$slice显示数组中的前几项或切片显示数组的数据 { $slice:3 },{ $slice:[2,2] }
db.py.find({CPU:"4G"},{_id:0})  
// 查找 CPU 参数数组中为 4G 的文档

db.py.find({CPU:{$all:["QL970","4G"]}},{_id:0})  
// 查找 CPU 参数数组中为 QL970 且为 4G 的文档

db.py.find({CPU:{$size:3}},{_id:0})  
// 查找 CPU 参数中有 3项 的文档

db.py.find({},{_id:0CPU:{$slice:3}})  
// 查找显示CPU参数数组中的前 3 项
db.py.find({},{_id:0CPU:{$slice:[2,2]}})  
// 查找显示CPU参数数组中跳过前 2 项,再显示后两项

6、其他查找操作符

符号功能
$exists查找存在某个域的文档。true为显示存在该域的文档,false反之。
$mod通过整除余数进行查找
$type查找值为指定类型的文档 1
db.py.find({CPU:{$exists: true}},{_id:0})  
// 查找存在 CUP 这个域的文档

db.py.find({price:{$mod:[2,0]}},{_id:0})  
// 查找 price 的值 为偶数(被2除余0) 的文档

db.py.find({price:{$type:1}},{_id:0})  
// 查找 price 的值 类型为 double 的文档

db.py.find({},{_id:0CPU:{$slice:3}})  
// 查找显示CPU参数数组中的前 3 项
db.py.find({},{_id:0CPU:{$slice:[2,2]}})  
// 查找显示CPU参数数组中跳过前 2 项,再显示后两项

7、 find0ne()

  查找符合查询条件的第一个文档,参数与 find() 的一样

8、 查询结果相关函数

函数名功能
distinct()查找某个域都有哪些值
pretty()查询结果格式化显示
limit()查询结果显示前几个文档
skip()跳过前几个文档,显示后面的文档
count()统计查询到的文档个数
sort()按照指定的域进行排序
db.py.distinct("price")   // 查找所有price的值
db.py.find({},{_id:0}).pretty()  // 所有查询结果格式化显示
db.py.find({},{_id:0}).limit(2)  // 查询结果显示前两个文档
db.py.find({},{_id:0}).skip(2)  // 查询结果跳过前两个文档
db.py.find({},{_id:0}).count()  // 统计查询结果个数
db.py.find({},{_id:0}).sort({price:1})  // 查询结果按照price的升序排,-1为降序排
db.py.find({},{_id:0}).sort({price:1,model:1})  // 复合排序,price为第一排序项

  1. BSON类型对应的数字 参考文档 ↩︎

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值