mongoDB 比较运算符

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

一、比较运算符

  $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)
} 
时间: 2024-08-08 01:47:08

mongoDB 比较运算符的相关文章

MongoDB 文档字段增删改

MongoDB 基于CRUD(create,read,update,delete)方式实现了对集合上的文档进行增删改查.对于集合上字段的增删改,可以使用set或者unset修改器来实现.也可以使用文档替换的方式来实现.本文主要描述集合上字段的增删改,以及基于选项upsert的更新. 关于MongoDB文档更新可以参考:MongoDB 文档更新 一.语法描述 db.collection.update( <query>, //查询或过滤条件 <update>, //修改器(被修改键及内

mongoDB 逻辑运算符

在mongoDB中,逻辑运算也是较为常用的运算,这些逻辑运算通常包含与或非,取反,存在等等.本文描述mongoDB几类常用的逻辑运算符同时给出演示示例,供大家参考. 一.mongoDB中的几种逻辑运算符 $or 逻辑或 $and 逻辑与 $not 逻辑非 $nor 逻辑or的取反 $exists 存在逻辑 $type 查询键的数据类型 二.演示逻辑运算 演示集合persons中用到的文档数据请参考:mongoDB 比较运算符 1. $or Syntax: { $or: [ { <expressi

mongoDB 文档查询

在关系型数据库中,可以实现基于表上各种各样的查询,以及通过投影来返回指定的列.对于NoSQL mongoDB而言,所有能够在单表上完成的查询,在mongoDB中也可以完全胜任.除此之外,由于mongoDB支持基于文档嵌套以及数组,因此mongoDB也可以实现基于嵌套文档和数组的查询.具体见下文描述. 预备热身 Linux下快速安装MongoDB Windows平台下安装MongoDB mongoDB 启动与停止 mongo shell连接到mongoDB及shell提示符下执行js脚本 mong

全新版本MongoDB数据存储席卷物联网

本文首先对物联网进行了模型抽象,着重和大家剖析了MongoDB解决方案,包括文档模型.高可用复制集.分片集群和Aggregation&MapReduce,最后分享了全新的MongoDB特性. 以下为内容整理: MongoDB是文档型数据库,其核心的三大优势是灵活文档模型 .高可靠复制集. 高可扩展分片集群.在最新的 DB Engine Rank 的排名中,MongoDB 排在第4,是非关系型数据库领域的领头羊. 物联网模型抽象 物联网离我们越来越近,这主要得益于云计算和移动互联网技术的发展.物联

MongoDB常用命令小结_MongoDB

MongoDB常用命令: 超级用户相关: use admin #增加或修改用户密码 db.addUser(ixigua,'pwd') #查看用户列表 db.system.users.find() #用户认证 db.auth(ixigua,'pwd') #删除用户 db.removeUser('mongodb') #查看所有用户 show users #查看所有数据库 show dbs #查看所有的collection show collections #查看各collection的状态 db.p

MongoDB 聚合管道(Aggregation Pipeline)

管道概念 POSIX多线程的使用方式中, 有一种很重要的方式-----流水线(亦称为"管道")方式,"数据元素"流串行地被一组线程按顺序执行.它的使用架构可参考下图: 以面向对象的思想去理解,整个流水线,可以理解为一个数据传输的管道:该管道中的每一个工作线程,可以理解为一个整个流水线的一个工作阶段stage,这些工作线程之间的合作是一环扣一环的.靠输入口越近的工作线程,是时序较早的工作阶段stage,它的工作成果会影响下一个工作线程阶段(stage)的工作结果,即下

mongodb 基础知识

mongodb 基础知识 运行环境 CentOS Linux release 7.2.1511 (Core) 安装 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.9.tgz tar -zxvf mongodb-linux-x86_64-rhel70-3.2.9.tgz mv mongodb-linux-x86_64-rhel70-3.2.9 /usr/local/mongodb 添加到环境变量 vi ~

python操作mongodb根据

  本文实例讲述了python操作mongodb根据_id查询数据的实现方法.分享给大家供大家参考.具体分析如下: _id是mongodb自动生成的id,其类型为ObjectId,所以如果需要在python中通过_id查询,就需要转换类型 如果pymongo的版本号小于2.2,使用下面的语句导入ObjectId ? 1 from pymongo.objectid import ObjectId 如果pymongo的版本号大于2.2,则使用下面的语句 ? 1 from bson.objectid

MySQL和MongoDB设计实例对比

MySQL是关系型数据库中的明星,MongoDB是文档型数据库中的翘楚.下面通过一个设计实例对比一下二者:假设我们正在维护一个手机产品库,里面除了包含手机的名称,品牌等基本信息,还包含了待机时间,外观设计等参数信息,应该如何存取数据呢? 如果使用MySQL的话,应该如何存取数据呢? 如果使用MySQL话,手机的基本信息单独是一个表,另外由于不同手机的参数信息差异很大,所以还需要一个参数表来单独保存. CREATE TABLE IF NOT EXISTS `mobiles` (     `id`