欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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中使用的数据类型如下:
MongoDB查询高级

相关标签: 数据库