开发者社区> leshami> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mongoDB 比较运算符

简介: 比较运算符是我们学习任何语言或系统中最为常见的运算符之一。mongoDB的比较运算符,跟Linux的差不多,只不过每一个比较运算符前面会带有符号,他们分别是$eq、$gt、$gte、$lt、$lte、$ne、$in、符号,他们分别是\$eq、\$gt、\$gte、\$lt、\$lte、\$ne、\$in、nin等,下面将对这几个运算符进行描述。
+关注继续查看

比较运算符是我们学习任何语言或系统中最为常见的运算符之一。mongoDB的比较运算符,跟Linux的差不多,只不过每一个比较运算符前面会带有$eq$gt$gte$lt$lte$ne$innin等,下面将对这几个运算符进行描述。

一、比较运算符

  $eq    =               "="
  $gt   (greater than )  >
  $gte                   >=  (equal)
  $lt   (less than)      <
  $lte                   <=  (equal)
  $ne   (not equal)      !=
  $in                    in
  $nin  (not in)         !in

    重点:所有的比较运算符都是出现在键与值得中间,示例如下
            { <field_name>: { $operator: <value> } }
            { <ename>: { $eq: "robin" } }
            { <qty>: { $gt: 20 } }

二、比较运算符示例

1. $eq

     { <field>: {\$eq: <value> } }
        $eq表达式与{ field: <value> }等价
        <1> 支持简单匹配
        <2> 支持文档匹配(document,逐字段比较)
        <3> 支持数组匹配(array,有顺序要求)

    //单值匹配
    db.persons.find( { age: { $eq: 25 } } )
    db.persons.find( { age: 25 } )        //与上一条语句等价         

    //多值匹配
    db.persons.find( { age: { $eq: 25 } ,country: "USA"} )   
    db.persons.find({$and:[{age:{$eq:25}},{country:{$eq:"USA"}}]}) //也可以使用$and运算符

    //嵌套文档匹配
    db.persons.find( { score: {"c" : 75, "m" : 63,"e" : 97}} )

    db.persons.find({"score.c":{$eq:89}}) //可以使用基于.成员的方式进行匹配
    db.persons.find({"score.c":89})          //等价的查询方式

    //数组匹配
    db.persons.find({"books":{$eq:"PHP"}})  //forech查找,不包含A的数组不会被返回
    db.persons.find({"books":{$in:["PHP"]}})  //也可以使用$in方式替代
    db.persons.find({"books":"PHP"})        //等价方式

2. $gt/$gte

    {field: {$gt: value} }

    db.persons.find( { age: { $gt: 20 } } )                   //大于运算符
    db.persons.find( { age: { $gte: 25 } } ).sort({"age":-1}) //大于等于运算符及倒序排列

3. $lt/$lte

    Syntax: {field: {$lt: value} }

    db.persons.find( { age: { $lt: 25 } } )
    db.persons.find( { age: { $lte: 25 } } ).sort({"age":-1})
    db.persons.find( { age: { $lte: 25 } } )

4. $ne

    Syntax: {field: {$ne: value} }

    db.persons.find( { age: { $ne: 20 } } ).sort({"age":-1})

5. $in

    Syntax: { field: { $in: [<value1>, <value2>, ... <valueN> ] } }

    db.persons.find( { age: { $in: [ 25, 27 ] } } )  //多值匹配
    db.persons.find( { books: { $in: [ /^JA/, /^PH/ ] } } ) //正则表达式匹配,查询以JA以及PH开头的
    //Author : Leshami
    //Blog   : http://blog.csdn.net/leshami

6. $nin

    Syntax: { field: { $nin: [ <value1>, <value2> ... <valueN> ]} }

    db.persons.find( { age: { $nin: [ 25, 27 ] } } ).sort({"name":-1});
    db.persons.update({ books: { $nin:["JAVA","PHP"]} },{$set: { age:100 }}) //基于$nin的文档更新

三、演示用到的示例文档

var persons = [{
    name:"robinson.cheng",
    age:25,
    email:"robinson.cheng@qq.com",
    score:{c:89,m:96,e:87},
    country:"USA",
    books:["JS","C++","EXTJS","MONGODB"]
},
{
    name:"tom.tong",
    age:25,
    email:"tom.tong@qq.com",
    score:{c:75,m:66,e:97},
    country:"USA",
    books:["PHP","JAVA","EXTJS","C++"]
},
{
    name:"jerry.liu",
    age:26,
    email:"jerry.liu@qq.com",
    score:{c:75,m:63,e:97},
    country:"USA",
    books:["JS","JAVA","C#","MONGODB"]
},
{
    name:"henry.ye",
    age:27,
    email:"henry.ye@qq.com",
    score:{c:89,m:86,e:67},
    country:"China",
    books:["JS","JAVA","EXTJS","MONGODB"]
},
{
    name:"lisi",
    age:26,
    email:"lisi@qq.com",
    score:{c:53,m:96,e:83},
    country:"China",
    books:["JS","C#","PHP","MONGODB"]
},
{
    name:"fred.shu",
    age:27,
    email:"fred.shu@qq.com",
    score:{c:45,m:65,e:99},
    country:"China",
    books:["JS","JAVA","C++","MONGODB"]
},
{
    name:"jason.wu",
    age:27,
    email:"jason.wu@qq.com",
    score:{c:99,m:96,e:97},
    country:"China",
    books:["JS","JAVA","EXTJS","PHP"]
},
{
    name:"david.xiao",
    age:26,
    email:"david.xiao@dbsupport.cn",
    score:{c:39,m:54,e:53},
    country:"Korea",
    books:["JS","C#","EXTJS","MONGODB"]
},
{
    name:"frank.hu",
    age:27,
    email:"frank.hu@dbsupport.cn",
    score:{c:35,m:56,e:47},
    country:"Korea",
    books:["JS","JAVA","EXTJS","MONGODB"]
},
{
    name:"joe.zhou",
    age:21,
    email:"joe.zhou@dbsupport.cn",
    score:{c:36,m:86,e:32},
    country:"Korea",
    books:["JS","JAVA","PHP","MONGODB"]
},
{
    name:"steve.tang",
    age:22,
    email:"steve.tang@dbsupport.cn",
    score:{c:45,m:63,e:77},
    country:"Korea",
    books:["JS","JAVA","C#","MONGODB"]
}]
for(var i = 0;i<persons.length;i++){
    db.persons.insert(persons[i])
}
var persons = db.persons.find({name:"robinson.cheng"})
while(persons.hasNext()){
    obj = persons.next();
        print(obj.books.length)
} 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
mongodb使用like模糊查询
mongodb使用like模糊查询
0 0
MongoDB 条件操作符
MongoDB 条件操作符
0 0
MongoDB AND 条件
MongoDB AND 条件
0 0
MongoDB:20-MongoDB- 正则表达式
MongoDB:20-MongoDB- 正则表达式
0 0
mongoDB 逻辑运算符
在mongoDB中,逻辑运算也是较为常用的运算,这些逻辑运算通常包含与或非,取反,存在等等。
691 0
[MongoDB]条件操作符
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/52318394 MongoDB支持大量的条件操作符用于过滤结果。
638 0
MongoDB-基础-条件操作符
1.一些解释 less than         :  比..少  lt greater than      :  比..多  gt equals              :相等    e     MongoDB中的条件操作符有: (>) 大于 - $gt (=) 大于等...
560 0
MongoDB查询简单语法
1.  基本查询:    构造查询数据。    > db.test.findOne()    {         "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"),         "name" : "stephen",         "age" : 35,         "genda" : "male",         "email" : "stephen@hotmail.com"    }     --多条件查询。
1059 0
+关注
leshami
传播知识,分享快乐!十年以上数据库,系统运维与管理,性能优化经验。全部文章,欢迎扩散,转载请注明出处!
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ApsaraDB for MongoDB
立即下载
《阿里云数据库 MongoDB 专属集群版》
立即下载
MySQL查询优化实战
立即下载