• MongDB的高级查询


    1、条件操作符(<,<=,=,!=,>=,>)

    db.getCollection('集合名').find({ "age" : { $gt: 22 } } ); // 大于: 字段> 22 
    db.getCollection('集合名').find({ "age" : { $lt: 22 } } ); // 小于: 字段 < 22 
    db.getCollection('集合名').find({ "age" : { $ne: 22 } } ); // 等于: 字段 = 22 
    db.getCollection('集合名').find({ "age" : { $eq: 22 } } ); // 不等于:字段 != 22 
    db.getCollection('集合名').find({ "age" : { $gte: 22 } } ); // 大于等于: 字段 >= 22 
    db.getCollection('集合名').find({ "age" : { $lte: 22 } } ); // 小于等于: 字段 <= 22 

    2、 逻辑运算符and和or

    查询年龄大于18,并且性别是1,相当与and

    db.集合名.find({age:{$gte:18},gender:1})

    or的用法,或者年龄是20大于等于,或者工资大于5000,或者是HR

    db.mycollection1.find( {
        $or: [
            { age: {$gte: 20} },
            { salary: {$gt: 5000} },
            { job: "HR" }
        ]
    } )

    3、范围查找($in,$nin,$all)相当于sql的in和notIn

    db.getCollection('user').find({ "age" : { $in: [22,25] } } ); //age是22或25
    db.getCollection('user').find({ "age" : { $nin: [22,25] } } ); //age不是22和25的

    db.getCollection('user').find({ "age" : { $all: [22] } } ); //年龄符合22岁的所有用户

    4、判断字段是否存在($exists)

    查询所有存在 age 字段的记录

    db.getCollection('user').find({ "age" : { $exists: true } } ); 

    查询所有不存在 age2 字段的记录 

    db.getCollection('user').find({ "age2" : { $exists: false } } ); 

    5、null查询

    db.getCollection('user').find({ "age" : null})

    mongoDB本身对于不存在 age 字段的值默认是null。 

    6、取模运算( $mod)

    db.getCollection('user').find({ age: { $mod : [ 10 , 5 ] }})

    表示除以10,余数是5的,age点段都会被查出来 

    7、 查询记录条数(count) 

    db.mycollection1.find().count()
    
    db.mycollection1.count( {查询条件} )

    8、limit和skip

    # 限定显示条数
    db.mycollection1.find().limit(数量)
    
    # 跳过指定第几条数据
    db.mycollection1.find().skip(2)
    
    # 混合使用
    db.mycollection1.find().limit(10).skip(3)

     

    9、自定义函数查询

    $where: function(){...}

    列如:查询返回年龄大于等于18的用户

    db.mycollection1.find( {
        $where: function() {
            return this.age >= 18;
        }
    } )
    

    10、排序sort

    sort用于排序,-1表示降序,1表示升序,也可以多个字段排序

    db.getCollection('user').find({}).sort({age:-1})

    11、投影:查询条件中只查询选择的字段

    参数为字段与值,值为1表示显示,值为0不显示

    db.stu.find({查询条件},{_id:0,name:1,gender:1}) 

    12、去重distinct()函数

     

    # 格式为:
    db.集合名.distinct( "指定字段", {查询条件} )
    
    # 如
    db.mycollection1.distinct( 
        "job", 
        { age: {$lt: 40} } 
    )

    13、正则表达

    有两种方法:

    • /表达式内容/
    • {$regex: "表达式内容"}

     

    db.mycollection1.find( {
        name: /^Ja\w+$/
    } )
    
    # 或
    db.mycollection1.find( {
        name: {
            $regex: "/^Jaso\w?$"
        }
    } )

    Aggregation是MongoDB特有的一种Pipline管道型、聚合查询方式。后记 

  • 相关阅读:
    redis---非关系型数据库(NoSql)
    25K测试老鸟7年经验的面试心得,四种公司、四种问题…
    工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
    在Java应用程序中嵌入百度地图的实现方法
    【二叉树系列】插入&删除&修剪&有序数组转二叉搜索树&二叉搜索树转换为累加树
    改变工作目录和根目录
    CatBoost高级教程:分布式训练与大规模数据处理
    金蝶云星空生产管理(冲刺学习)
    9月22日全球Web3加密行业重大资讯大汇总
    华纳云:负载均衡服务器的作用是什么 有哪些方式
  • 原文地址:https://blog.csdn.net/chehec2010/article/details/126412562