MongoDB常用条件查询
- 查询集合中的所有数据
- 大小判断查询
- 逻辑条件查询
- 其他查询
- 对数组的查询
- 查询指定数组长度
- 查询数组里某一个值
- 指定查询数量
- 跳跃查询
- 对查询结果进行排序
- 使用正则表达式查询
find() 函数的查询结果有两种显示方式
一种是不使用局部变量接受,直接像本篇这样
这种查询方法默认显示20条数据
另一种是使用一个局部变量接受查询结果
这个局部变量就是所谓的“游标”,需要我们手动的去迭代游标
查询集合中的所有数据
// 本片使用的集合数据
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd37"), "name" : "可比克", "price" : 12 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd38"), "name" : "呀土豆", "price" : 15 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd39"), "name" : "炸薯条", "price" : 18 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd3a"), "name" : "原味薯条", "price" : 20 }
{ "_id" : ObjectId("5f3e7636d59f93d84c24dd3b"), "name" : "土豆条", "price" : 18 }
{ "_id" : ObjectId("5f3e767ad59f93d84c24dd3c"), "name" : "爱你薯条", "price" : 18, "sort" : [ "原味", "麻辣", "酸爽", "五香" ] }
db.goods.find()
goods 是一个数据库中的一个集合,相当于myslq数据库中的一张表
为了将查询结果更优雅得显示,可以使用 pretty() 对查询结果进行格式化
db.goods.find().pretty()
大小判断查询
- 等于
// 查询价格等于18的商品
db.goods.find({price:18})
- 不等于 $ne (not equal)
// 查询价格不等于18的商品
db.goods.find({price:{$ne:18}})
- 大于 $gt (greater than)
// 查询价格大于18的商品
db.goods.find({price:{$gt:18})
- 大于等于 $gte (greater than and equal)
// 查询价格大于等于18的商品
db.goods.find({price:{$gte:18}})
- 小于 $lt (less than)
// 查询价格小于18的商品
db.goods.find({price:{$lt:18}})
- 小于等于 $lte (less than and equal)
// 查询价格小于等于18的商品
db.goods.find({price:{$lte:18}})
逻辑条件查询
- and 多条件同时满足,不同条件之间使用英文逗号隔开即可
// 查询name为“炸薯条” 并且 price 为18的商品
db.goods.find({name:'炸薯条',price:18}).pretty()
- or 多条件满足之一即可
$or 接收一个数组,数组中是多个文档,每个文档就是一个条件,只要满足数组中任何一个条件即可查询到
// 查询 name 为“炸薯条” 或者 价格为18的商品
db.goods.find({$or:[{name:'炸薯条'},{price:18}]}).pretty()
其他查询
对数组的查询
查询指定数组长度
// 查询数组长度为4的文档
db.goods.find({sort:{$size:4}})
$size 接收一个整数,表示长度等于多少
查询数组里某一个值
// 查询数组 sort 中含有 “五香” 的文档
db.goods.find({sort:'五香'}).pretty()
指定查询数量
limit(x) 指定返回 x 条数据
如果查询到的结果数量大于 x ,只显示前 x 条数据
否则显示查询到的所有数据
db.goods.find({price:{$gt:15}}).limit(3)
跳跃查询
find() 函数会对查询结果进行排序,默认从第一个开始显示
skip(x) 跳过查询结果的前 x 条,从 x+1 条数据开始显示
// 遍历集合,从集合的第四条数据开始显示
db.goods.find().skip(3)
// 查询 name 为“炸薯条”,或者价格等于18的商品,从查询结果的第二条数据开始显示
db.goods.find({$or:[{name:'炸薯条'},{price:18}]}).pretty().skip(1)
对查询结果进行排序
sort({指定的列 : number})
按照指定的列进行排序
number 为 1 代表升序,-1代表降序
// 查询价格大于等于15的商品,升序排列
db.goods.find({price:{$gte:15}}).sort({price:1}).pretty()
// 查询价格大于等于15的商品,降序排列
db.goods.find({price:{$gte:15}}).sort({price:-1}).pretty()
使用正则表达式查询
MongoDB支持的正则表达式与 js 中相同
正则表达式使用 $regex
// 查询name中含有“薯条”的商品
db.goods.find({name:{$regex:"薯条"}}).pretty()