MongoDB查询高级
程序员文章站
2022-05-08 16:50:49
...
投影
对返回的结果进行筛选,返回必要的字段:
- db.col.find({查询条件}, {字段名称:1, ......})
参数为字段与值,值为1表示显示
特殊: 对于_id列默认是显示的, 如果不显示需要明确设置为0
MongoDB查询条件除了支持使用比较运算符之外,还支持范围、正则、逻辑运算符、分页、排序、统计个数等
逻辑运算符
and条件:find()方法可以传入多个键,每个键以逗号隔开,即常规SQL的AND条件
or条件:
db.collection_name.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
正则表达式
使用//或者$regex编写正则表达式:
- db.col.find({name: /^黄/)
- db.col.find({name: {$regex: "^黄"}})
范围查询:非连续范围
范围使用$in、$nin判断是否在某个范围:db.col.find({age: {$in:[18, 28]}})
排序
使用sort()方法对查出来的数据进行排序
sort():db.col.find(),.sort({字段:1, 字段:-1, .....})
- 1:升序
- -1:降序
db.stu.find().sort({gender:-1, age:1})
限制数量
使用limit()和skip()来读取指定数目文档、跳过指定数目文档
limit():db.col.find().limit(number)
skip():db.col.find().skip(number)
组合使用:
- db.stu.find().limit(4).skip(5)
- db.stu.find().skip(5).limit(4)
统计个数
使用count()方法对查出的数据统计个数
count():
- db.col.find({条件}).count()
消除重复
使用distinct()方法对数据去重:
- db.col.distinct('去重字段', {条件})
db.stu.distinct('hometown',{age:{$gt:18}})
自定义查询
自定义查询:使⽤$where后⾯写⼀个函数, 返回满⾜条件的数据
db.stu.find({
$where:function() {
return this.age>30;}
})
$type操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果
如果想获取 "col" 集合中 title为String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 2}})
MongoDB中使用的数据类型如下: