zoukankan      html  css  js  c++  java
  • mogodb查询

    转自:http://blog.csdn.net/congcong68/article/details/46841075

    一、简介

        MongoDB提供了db.collection.find() 方法可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段。

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

       语法

       

    [sql] view plain copy
     
    1. > db.collection.find(query,projection)  

    参数

    类型

    描述

    query

    document

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

    projection

    document

    指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段

    projection语法:

    [sql] view plain copy
     
    1. { field1: <boolean>, field2: <boolean> ... }  



     说明:

       1或者true表示返回字段

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

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

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

       

    1.  查询数据

       

    (1)返回集合中所有文档:

         db.collection.find()

         或者

        db.collection.find({})

       

       如同SQL语句:

       SELECT * FROM TABLENAME

       

       

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

          

             语法:

             

    [sql] view plain copy
     
    1. db.orders.find({},{field1: <boolean>, field2: <boolean> ... })  

         例子:

       

    [sql] view plain copy
     
    1. >db.orders.find({},{"onumber":1,"cname":1})  

       而_id默认设置是1,所有也返回回来

        可以设置_id不返回

       

        例子:

    [sql] view plain copy
     
    1. >db.orders.find({},{"onumber":1,"cname":1,"_id":0})  


    2. 根据条件查询

       (1)     等于条件查询

               

         语法:

    [sql] view plain copy
     
    1. >db.collect.find({<field1>: <value1>,<field2>: <value2>, ... })  

        例子:

    [sql] view plain copy
     
    1. >db.orders.find({"onumber":"002"})  

         查找onumber=002的文档

      (2)     比较操作符

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

        语法:

    [sql] view plain copy
     
    1. { <field1>: { <expression1> },<field2>: {<expression1> }, ... }  

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

           例子:

            

    [sql] view plain copy
     
    1. >db.orders.find({"onumber":{$gt:"003"}})  

            

           

              

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

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

           例子:

    [delphi] view plain copy
     
    1. >db.orders.find({"onumber":{$gte:"002",$lte:"003"}},{"onumber":1,"cname":1})  

       

       

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

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

          1)$and 条件查询

          

            语法:

               

    [sql] view plain copy
     
    1. { $and: [ { <expression1> }, { <expression2> } , ... , ]}  

          简单的用法的语法:

         

    [sql] view plain copy
     
    1. { <field1>: <value1>,<field2>: <value2>, ...}  

         例子:

         

    [sql] view plain copy
     
    1. >db.orders.find({"onumber":"002","cname":"zcy2"})  

       

       

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

         

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

          

          语法:

          

    [sql] view plain copy
     
    1. { $nor: [ { <expression1> }, { <expression2> }, ... ] }  

        例子:

          

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

     

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

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

       

        例子:

       

    [sql] view plain copy
     
    1. >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(包含)条件查询

               语法:

                  

    [sql] view plain copy
     
    1. { field: { $in: [<value1>, < value2>, ...] } }  

              例子:

                    

    [sql] view plain copy
     
    1. >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(不包含)条件查询

               

               语法:

                   

    [sql] view plain copy
     
    1. { field: { $nin: [<value1>, < value2>, ...] } }  

                $nin(不包含)跟$in(包含)相反的,这里就不做具体的介绍

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

           语法:

            

    [sql] view plain copy
     
    1. { field: { $not: { < expression1> } } }  

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

             

               

        例子:

            

    [sql] view plain copy
     
    1. >db.orders.find({"onumber":{$not:{$gt:"002"}}})  

             

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

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

          语法:

              

    [sql] view plain copy
     
    1. { field: { $ exists:  < boolean>  } }  

           例子:

              

    [sql] view plain copy
     
    1. >db.orders.find({"age":{$exists:true}})  

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

         插入有age元素,在执行一下

             

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

         语法:

           

    [sql] view plain copy
     
    1. { field: { $mod: [ value, value2 ]} }  

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

         例子:

            

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

            

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

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

          语法:

             { field: null }

      

          例子:

           

    [sql] view plain copy
     
    1. >db.orders.find({"age":null})  

               

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

                

    [sql] view plain copy
     
    1. >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

  • 相关阅读:
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之多方式虚拟直播
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之点播分享
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件实现的多码率视频点播功能说明
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Windows服务安装
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Nodejs调用bat或sh脚本
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Grunt的使用简介
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件二次开发接口对接说明示列
    EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器和EasyDSS云平台异同
  • 原文地址:https://www.cnblogs.com/yanwei-wang/p/8607787.html
Copyright © 2011-2022 走看看