zoukankan      html  css  js  c++  java
  • mongodb高级查询

    数据查询

    • 方法find():查询
      db.集合名称.find({条件文档})
    • 方法find():查询,只返回第一个
      db.集合名称.findOne({条件文档})
    • 方法pretty():将结果格式化
      db.集合.find({条件文档}).pretty()

    比较运算符

    • 等于:默认是等于判断,没有运算符
    • 小于:$lt(less than)
    • 小于等于:$lte(less than equal)
    • 大于等于:$gte
    • 不等于:$ne
    db.stu.find({age:{$gte:18}})
    

    范围运算符

    使用"$in","$nin"判断是否在某个范围内
    查询年龄为18、28的学生

    db.stu.find({age:{$in:{19,28,38}}})
    

    $not
    语法: { field: { $not: { } } }

    $nor额外比较
    考虑入校操作:
    
    db.inventory.find( { $nor: [ { price: 1.99 }, { qty: { $lt: 20 } }, { sale: true } ] }
    inventory集合查询所有的文档,条件如下:
    
    字段price不等于1.99,字段qty不小于20,字段sale不等于true;查询的结果包含不存在的字段;
    

    逻辑运算符

    • and:在json中写多个条件即可查询年龄大于或等于18,并且性别为true的学生
    db.stu.find({age:{$gte:18},gender:true})
    
    • or:使用$or,值为数组,数组中每个元素为json查询年龄大于18,或性别为false的学生
    db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
    
    • 查询年龄大于18或性别为男生,并且姓名是郭靖
    db.stu.find({$or:[{age:{$gt:18}},{gender:true}],name:'gj'})
    

    支持正则表达式

    使用//或$regex编写正则表达式
    查询姓黄的学生

    db.produces.find({sku:/^abc/})  
    db.produces.find({sku:{$regex:'789$'})
    

    limit和skip

    • 方法limit():用于读取指定数量的文档
      db.集合名称.find().limit(NUMBER)
      查询2条学生信息
    db.stu.find().limit(2)
    
    • 方法skip():用于跳过指定数量的文档
      db.集合名称.find().skip(NUMBER)
    db.stu.find().skip(2)
    
    • 同时使用
      db.stu.find().limit(4).skip(5)

      db.stu.find().skip(5).limit(4)

    自定义查询

    使用$where后面写一个函数,返回满足条件的数据查询年龄大于30的学生

    db.stu.find({
        $where:function() {
            return this.age>30;
        }
    })
    

    投影

    在查询到的返回结果中,只选择必要的字段
    db.集合名称.find({},{字段名称:1,...})

    参数为字段与值,值为1表示显示,值为0不显
    特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

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

    排序

    方法sort(),用于对集进行排序
    db.集合名称.find().sort({字段:1,...})
    参数1为升序排列
    参数-1为降序排列
    根据性别降序,再根据年龄升序

    db.stu.find().sort({gender:-1,age:1})
    

    统计个数

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

    db.stu.find({gender:true}).count()  
    db.tu.count({age:{$gt:20},gender:true})
    

    消除重复

    方法distinct()对数据进行去重

    db.集合名称.distinct('去重字段',{条件})
    db.stu.distinct('distinct',{age:{$gt:18}})
    
  • 相关阅读:
    怎样使android的view动画循环弹动
    QQ消息99+形成--第三方开源--BezierView
    自定义Toast的显示效果
    (转载)实现QQ侧滑边栏
    图片加载与缓存利器(自动缓存)--第三方开源-- Glide
    多层级Spinner列表选项实时更新树形层级(选择城市)
    android任意view爆炸效果--第三方开源--ExplosionField
    TextView字符串波浪式跳动--第三方开源---JumpingBeans
    简单Spinner
    【前端】JavaScript入门学习
  • 原文地址:https://www.cnblogs.com/colden/p/9865185.html
Copyright © 2011-2022 走看看