zoukankan      html  css  js  c++  java
  • 学习MongoDB 四: MongoDB查询(一)

       

    一、简单介绍

        MongoDB提供了db.collection.find() 方法能够实现依据条件查询和指定使用投影运算符返回的字段省略此參数返回匹配文档中的全部字段。


    二.db.collection.find()查询数据

       语法

       

          > db.collection.find(query,projection)

     

    參数

    类型

    描写叙述

    query

    document

    可选. 使用查询操作符指定查询条件

    projection

    document

    指定使用投影运算符返回的字段省略此參数返回匹配文档中的全部字段

     

    projection语法:

     

           { field1: <boolean>, field2: <boolean> ... }


     

     说明:

       1或者true表示返回字段

       0或者false表示不返回该字段

     

        _id:默认就是1,没指定返回该字段时,默认会返回,除非设置为0是。就不会返回该字段。

        指定返回字段。有时文档字段多并数据大时,我们指定返回我们须要的字段,这样既节省数据传输量,降低了内存消耗,提高了性能,在数据大时,性能非常明显的。

       

    1.  查询数据

       

    (1)返回集合中全部文档:

         db.collection.find()

         或者

        db.collection.find({})


       


       如同SQL语句:

       SELECT * FROM TABLENAME




       

       



    (2)指定使用投影运算符返回的字段省略此參数返回匹配文档中的全部字段

          

             语法:

             

              db.orders.find({},{field1: <boolean>, field2: <boolean> ... })


         样例:

       

             >db.orders.find({},{"onumber":1,"cname":1})



       而_id默认设置是1,全部也返回回来

     

        能够设置_id不返回

       

        样例:


          >db.orders.find({},{"onumber":1,"cname":1,"_id":0})



    2. 依据条件查询

       (1)     等于条件查询

               

         语法:

            >db.collect.find({<field1>: <value1>,<field2>: <value2>, ... })



        样例:

     

           >db.orders.find({"onumber":"002"})




         查找onumber=002的文档

     

      (2)     比較操作符

     

        $gt(大于)、$gte(大于或等于)、 $lt(小于)、 $lte(小于或等于)


        语法:


            { <field1>: { <expression1> },<field2>: {<expression1> }, ... }

     

         1)$gt(大于)比較操作符

     

           样例:

            

             >db.orders.find({"onumber":{$gt:"003"}})
            

           

              

            我们查找onumber>003的值仅仅有004

     

        2)$gte(大于或等于)与 $lte(小于或等于)联合查询并指定返回字段(通过第二參数)

     

           样例:

              >db.orders.find({"onumber":{$gte:"002",$lte:"003"}},{"onumber":1,"cname":1})
       

       

     

          我们查找002=<onumber<=003 并指定返回onumber和cname字段。而_id默认设置是1。全部也返回回来

     

    (3) $or、和 $and 条件查询

          1)$and 条件查询

          

            语法:

               

            { $and: [ { <expression1> }, { <expression2> } , ... , ]}

          简单的使用方法的语法:

         

           { <field1>: <value1>,<field2>: <value2>, ...}


         样例:

         

            >db.orders.find({"onumber":"002","cname":"zcy2"})
       

       

         查找onumber=002 AND cname= zcy2 查询文档

         

       2)$or(或者)条件查询

          

          语法:

          

           { $nor: [ { <expression1> }, { <expression2> }, ... ] }

        样例:

          

           >db.orders.find({$or:[{"onumber":"002"},{"cname":"zcy1"}]})

     

        我们条件onumber=002 OR cname= zcy1 查找仅仅要符合onumber=002或者cname= zcy1条件的文档

     

      3) $or 和$and 联合条件查询

       

        样例:

       

          >db.orders.find({$and:[{"date":"2015-07-01"},{$or:[{"onumber":"002"},{"cname":"zcy1"}]}]})
      

         

         查询条件 date=2015-07-01and (onumber=002 OR cname=zcy1) 的文档。就是既等如date等于2015-07-01 而且要满足onumber等于002或者cname等于zcy1当中一个就能够。

    (4)$in(包括)、$nin(不包括)条件查询

           1)$in(包括)条件查询


               语法:

                  

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

              样例:

                    

             >db.orders.find({"onumber":{$in:["001","002"]}})

                   

                 查询onumber in("001","002") 条件的文档。就是onumber等于001或者等于002 这个跟$or有点像。只是$or做为条件查询时,能够指定不同的字段:  db.orders.find({$or:[{"onumber":"002"},{"cname":"zcy1"}]})

    ,而$in仅仅针对一个字段。


           2)$nin(不包括)条件查询

               

               语法:

                   

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

                $nin(不包括)跟$in(包括)相反的,这里就不做详细的介绍

     

    (5)$not(不等于) 条件查询

           语法:

            

         { field: { $not: { < expression1> } } }


            $not操作符不能独立使用,必须跟其它操作条件一起使用(除$regex)

             

               


        样例:

            

           >db.orders.find({"onumber":{$not:{$gt:"002"}}})

             

          查找onumber不等于大于002的文档数据

     

    (6)$exists用来推断一个field是否存在

          语法:

              

          { field: { $ exists:  < boolean>  } }


           样例:

              

          >db.orders.find({"age":{$exists:true}})


     

         没有age这个元素,什么都没返回

     

         插入有age元素。在运行一下


             

     

     

    (7)$mod取模并等于指定的值

         语法:

           

         { field: { $mod: [ value, value2 ]} }

         对元素field值对value取模的。取模的值要value2的文档数据

     

         样例:

            

          >db.orders.find({"age":{$mod:[5,1]}})

            

         对age元素的值和5取模,取模的值要等于1的文档数据

     

    (8)null 查找元素不存在和元素相应的值为null的文档

          语法:

             { field: null }

      

          样例:

           

          >db.orders.find({"age":null})

               


           1)      查找age元素存在并值等于null

                

             >db.orders.find({"age":{$in:[null],$exists:true}})

                  

      

    (9) $type来匹配一个元素的类型

         语法:

           { field: { $type: < number >} }

     

          number 是MongoDB中使用的类型相应的类型值

    类型

    类型值

    Double

    1

    String

    2

    Object

    3

    Array

    4

    Binary data

    5

    Undefined (deprecated)

    6

    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

    Max key

    127

     




  • 相关阅读:
    基于VitralBox 的 OpenEuler系统 安装增强功能
    OpenEuler 操作系统 安装 银河麒麟GUI界面
    OpenEuler 操作系统的安装
    vscode 安装markdown插件 及 实用markdown语法
    无限技能下的密码系统愿景
    商用密码企业调研
    实验四 Python综合实践 ——20191331刘宇轩
    20191331 《Python程序设计》实验三报告
    9.29载入史册的一天
    人生的四天半
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7308446.html
Copyright © 2011-2022 走看看