zoukankan      html  css  js  c++  java
  • MongoDB 数据查询

    数据查询

    基本查询

    • 方法find():查询
    db.集合名称.find({条件文档})
    

      

    • 方法findOne():查询,只返回第一个
    db.集合名称.findOne({条件文档})
    

      

    • 方法pretty():将结果格式化
    db.集合名称.find({条件文档}).pretty()
    

      

    比较运算符

    • 等于,默认是等于判断,没有运算符
    • 小于$lt
    • 小于或等于$lte
    • 大于$gt
    • 大于或等于$gte
    • 不等于$ne
    • 例1:查询名称等于'郭靖'的学生
    db.stu.find({name:'郭靖'})
    

      

    • 例2:查询年龄大于或等于18的学生
    db.stu.find({age:{$gte:18}})
    

      

    逻辑运算符

    • 查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接
    • 逻辑与:默认是逻辑与的关系
    • 例3:查询年龄大于或等于18,并且性别为true的学生
    db.stu.find({age:{$gte:18},gender:true})
    

      

    • 逻辑或:使用$or,值为数组,数组中每个元素为json
    • 例4:查询年龄大于18,或性别为false的学生
    db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
    

      

    • and和or一起使用
    • 例5:查询年龄大于18或性别为true的学生,并且学生的姓名为gj
    db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
    

      

    范围运算符

    • 使用"$in","$nin" 判断是否在某个范围内
    • 例6:查询年龄为18、28的学生
    db.stu.find({age:{$in:[18,28]}})
    

      

    支持正则表达式

    • mongodb提供的终端shell,同时也是一个js的执行器,可以编写js的代码和函数
    • 使用//或$regex编写正则表达式
    • 例7:查询姓黄的学生
    db.stu.find({name:/^黄/})
    db.stu.find({name:{$regex:'^黄'}}})
    

      

    自定义查询

    • 使用$where后面写一个函数,返回满足条件的数据
    • 例7:查询年龄大于30的学生
    db.stu.find({$where:function(){return this.age>30;}})
    

      







    Limit

    • 方法limit():用于读取指定数量的文档
    • 语法:
    db.集合名称.find().limit(NUMBER)
    

      

    • 参数NUMBER表示要获取文档的条数
    • 如果没有指定参数则显示集合中的所有文档
    • 例1:查询2条学生信息
    db.stu.find().limit(2)
    

      

    skip

    • 方法skip():用于跳过指定数量的文档
    • 语法:
    db.集合名称.find().skip(NUMBER)
    

      

    • 参数NUMBER表示跳过的记录条数,默认值为0
    • 例2:查询从第3条开始的学生信息
    db.stu.find().skip(2)
    

      

    一起使用

    • 方法limit()和skip()可以一起使用,不分先后顺序

    • 创建数据集

    for(i=0;i<15;i++){db.t1.insert({_id:i})}
    

      

    • 查询第5至8条数据
    db.stu.find().limit(4).skip(5)
    或
    db.stu.find().skip(5).limit(4)
    

      







    投影

    • 在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段
    • 如:一个文档有5个字段,需要显示只有3个,投影其中3个字段即可
    • 语法:
    • 参数为字段与值,值为1表示显示,值为0不显示
    db.集合名称.find({},{字段名称:1,...})
    

      

    • 对于需要显示的字段,设置为1即可,不设置即为不显示
    • 特殊:对于_id列默认是显示的,如果不显示需要明确设置为0
    • 例1
    db.stu.find({},{name:1,gender:1})
    

      

    • 例2
    db.stu.find({},{_id:0,name:1,gender:1})
    

      







    排序

    • 方法sort(),用于对结果集进行排序
    • 语法
    db.集合名称.find().sort({字段:1,...})
    

      

    • 参数1为升序排列
    • 参数-1为降序排列
    • 例1:根据性别降序,再根据年龄升序
    db.stu.find().sort({gender:-1,age:1})
    

      







    统计个数

    • 方法count()用于统计结果集中文档条数
    • 语法
    db.集合名称.find({条件}).count()
    

      

    • 也可以与为
    db.集合名称.count({条件})
    

      

    • 例1:统计男生人数
    db.stu.find({gender:true}).count()
    

      

    • 例2:统计年龄大于20的男生人数
    db.stu.count({age:{$gt:20},gender:true})
    

      







    消除重复

    • 方法distinct()对数据进行去重
    • 语法
    db.集合名称.distinct('去重字段',{条件})
    

      

    • 例:查找年龄大于18的学生,来自哪些省份
    db.stu.distinct('hometown',{age:{$gt:18}})
    

      

  • 相关阅读:
    ios 数据类型转换 UIImage转换为NSData NSData转换为NSString
    iOS UI 12 block传值
    iOS UI 11 单例
    iOS UI 08 uitableview 自定义cell
    iOS UI 07 uitableviewi3
    iOS UI 07 uitableviewi2
    iOS UI 07 uitableview
    iOS UI 05 传值
    iOS UI 04 轨道和动画
    iOS UI 03 事件和手势
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10130158.html
Copyright © 2011-2022 走看看