• Mongodb操作符


    一、比较操作符

     用于比较两个表达式并从mongoDB集合中获取数据,常用操作符如下:

    操作符 格式 示例 类似于sql语句 备注
    (>)大于 - $gt {<key>:{$gt:<value>}}  db.big.find({"age":{$gt:22}})  where age > 22 查询age大于22的数据
    (<)小于 - $lt {<key>:{$lt:<value>}}  db.big.find({"age":{$lt:20}})  where age < 20  
    (>=)大于等于 - $gte {<key>:{$gte:<value>}}  db.big.find({"age":{$gte:22}})  where age >= 22  
    (<=)小于等于 - $lte {<key>:{$lte:<value>}}  db.big.find({"age":{$lte:22}})  where age <= 22  
    (=) 等于 - $eq {<key>:<value>}  db.big.find({"name":"jun"})  where name = 'jun'  
           $in { field: { $in: [<value1>, <value2>, ... <valueN> ] } }

     db.big.find({"age":{$type:"array"}})

     db.big.find({"age":{$in:[25,22]}})

      匹配字段值等于指定数组中的任何值(字段值为数组类型时,数组中至少有一个元素在指定数组中)
    (!=)不等于 - $ne {<key>:{$ne:<value>}}  db.big.find({"age":{$ne:22}})  where age != 22  
           $nin { field: { $nin: [ <value1>, <value2> ... <valueN> ]} }

     db.big.find({"name":{$nin:["jun","wang"]}})

     db.big.find({"age":{$nin:[25,22]}})

      字段值不在指定数组或者不存在(字段值为数组类型时,数组中没有一个元素与指定数组中元素相等)

    二、逻辑操作符

    操作符 格式 示例 备注
    $or { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } db.big.find({$or:[{"name":"jun"},{"age":25}]}) 文档至少满足其中的一个表达式
    $and { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] } db.big.find({"name":"jun","age":25}) 文档满足所有的表达式
    $not { field: { $not: { <operator-expression> } } } db.big.find({"age":{$not:{$gt:22}}}) 字段值不匹配表达式或者字段值不存在
    $nor { $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }

    db.big.find({$nor:[{"age":18},{"name":"jun"}]})

    db.big.find({$nor:[{"name":"jun"},{"age":{$lt:20}},{"sex":"x"}]})

    字段值不匹配所有的表达式的文档,包括那些不包含这些字段的文档

     三、元素操作符

     3.1 $exists
    语法: { field: { $exists: <boolean> } }
    
    1.当boolean为true,$exists匹配包含字段的文档,包括字段值为null的文档。
    2.当boolean为false,$exists返回不包含对应字段的文档。
    
    示例:
    db.big.find({"name":{$exists:true}})
     3.2 $type
    匹配字段值为指定数据类型的文档
    { field: { $type: <BSON type number> | <String alias> } }
    类型数字备注
    Double 1  
    String 2  
    Object 3  
    Array 4  
    Binary data 5  
    Object id 7  
    Boolean 8  
    Date 9  
    Null 10  
    Regular Expression 11  
    JavaScript 13  
    Symbol 14  
    JavaScript (with scope) 15  
    32-bit integer 16  
    Timestamp 17  
    64-bit integer 18  
    Min key 255 Query with -1.
    Max key 127  
    示例:
    db.big.find({"name":{$type:2}})
    db.big.find({"name":{$type:"string"}})

    四、评估操作符

      4.1 $mod
    匹配字段值被除有指定的余数的文档
    语法:{ field: { $mod: [ divisor(除数), remainder(余数) ] } }
    示例:db.big.find({"age":{$mod:[5,0]}})
     4.2 $regex
    语法:
    { <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }

    参数:
    i:忽略大小写
    m:多行匹配
    x:忽略空格
    s:点号可以匹配换行符

    示例:
    db.big.find({"name":{$regex:/^jun/i}})
    db.big.find({"name":{$regex:/^jun/,$options:'i'}})
     4.3 $text

      MongoDB支持对文本内容执行文本搜索操作,其提供了索引text index和查询操作$text来完成文本搜索功能。

      只有拥有text index的collection才支持全文检索

      每个collection只能拥有一个text index

      Text index可以包含任何的string类型、string数组类型的字段

      Text index可以包含多个字段

      使用createIndex或ensureIndex函数来创建索引,详见:https://www.cnblogs.com/Xinenhui/p/15871849.html

     4.4 $where

      $where操作符功能强大且灵活,它可以将JavaScript表达式的字符串或 JavaScript函数作为查询语句的一部分。在JavaScri pt表达式和函数中,可以 使用this或obj来引用当前操作的文档。 JavaScript表达式或函数返回值为true时,才会返回当前的文档。

      查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成 JavaSript对象后,才可以通过$where表达式来运行。因此,它比常规查询要 慢很多,一般情况下,要避免使用$where查询。

    五、数组操作符

    操作符 格式 示例 备注
    $all { <field>: { $all: [ <value1> , <value2> ... ] } } db.big.find({"name":{$all:["wang","zhang","chen"]}}) 字段值是包含所有指定元素的数组的文档
    $elemMatch { <field>: { $elemMatch: { <query1>, <query2>, ... } } } db.big.find({"name":{$elemMatch:{"wang":"jun","age":2}}}) 数组字段至少一个元素满足所有指定查询条件的文档
    $size { field: { $size: 2 } }   匹配数组字段元素个数等于指定数量的文档
  • 相关阅读:
    Eureka与Zookeeper的区别
    Eureka的集群配置
    Rest微服务案例
    Eureka概述
    SpringCloud与Dubbo区别对比
    各种微服务框架对比
    ElasticSearch(九):elasticsearch-head插件安装
    ElasticSearch(八):elasticsearch.yml配置说明
    Docker(2):使用Dockerfile创建支持SSH服务的镜像
    CentOS 7 安装Kubernetes(单机版)
  • 原文地址:https://www.cnblogs.com/Xinenhui/p/15853207.html
Copyright © 2020-2023  润新知