mongoDB 比较运算符

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 比较运算符是我们学习任何语言或系统中最为常见的运算符之一。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数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
3月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
3月前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
|
4月前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
100 4
|
4月前
|
监控 NoSQL MongoDB
MongoDB数据库的索引管理技巧
【8月更文挑战第20天】MongoDB数据库的索引管理技巧
78 1
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
2月前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
22 1
|
2月前
|
存储 NoSQL Shell
MongoDB 创建数据库
10月更文挑战第12天
72 4
|
2月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。