3-MongoDB: 查询

Posted R_超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3-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

 

 









以上是关于3-MongoDB: 查询的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB的增删改查

Microsoft SQL Server 代码片段收集

片段视图返回后执行的 Firebase 查询

在 Java 的 GraphQL 查询中添加片段

MongoDB数据库入门到精通看这一篇就够了

推进学说代码片段