一、简介

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

学习MongoDB 四: MongoDB查询(一)的更多相关文章

  1. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  2. MongoDB学习记录(四) - MongoDB的"增查改删"操作之"改"

    更新文档主要有以下几种方法: db.collection.updateOne(filter, update, options) db.collection.updateMany(filter, upd ...

  3. MYSQL初级学习笔记四:查询数据的操作DQL(SELECT基本形式)(26-35)

    知识点六:查询数据的操作DQL(SELECT基本形式)(26-35) CREATE DATABASE IF NOT EXISTS cms DEFAULT CHARACTER SET utf8; USE ...

  4. 转MYSQL学习(四) 查询

    MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属 ...

  5. Entity Framework学习笔记(四)----Linq查询(1)

    请注明转载地址:http://www.cnblogs.com/arhat 从本章开始,老魏就介绍一下Entity Framework使用Linq来查询数据,也就是Linq To Entity.其实在E ...

  6. MongoDB (四) MongoDB 数据模型

    在 MongoDB 中的数据有灵活的模式.在相同集合中文档并不需要有相同的一组字段或结构的公共字段的集合,文档可容纳不同类型的数据. MongoDB设计模式的一些考虑 可根据用户要求设计架构. 合并对 ...

  7. MySQL学习(四)查询

    一.group_concat()函数.把groupby的分组中字段数据组合显示出来 select s_id , GROUP_CONCAT(要显示的字段名)  from table group by 分 ...

  8. PHP中的PDO操作学习(四)查询结构集

    关于 PDO 的最后一篇文章,我们就以查询结果集的操作为结束.在数据库的操作中,查询往往占的比例非常高.在日常的开发中,大部分的业务都是读多写少型的业务,所以掌握好查询相关的操作是我们学习的重要内容. ...

  9. MongoDB学习笔记四:索引

    索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至 ...

  10. MongoDB学习【四】—pymongo操作mongodb数据库

    一.pymongodb的安装 Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接. pip安装 pip 是一个通用的 Python 包管理工具, ...

随机推荐

  1. Tomcat下JSP、Servlet和JavaBean环境的配置

    经常看到jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助. 第一步:下载j2s ...

  2. Windows自动执行java脚本

    1.打包 idea 1).File-Project Structure-Arifacts 2). 3). 4). 5). 目录位于  根目录/out\artifacts\ 2.Windows定时任务 ...

  3. Redis安装和主要功能简介

    Redis安装和主要功能简介   Redis(https://redis.io/), 是一个内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 安装Redis 我很少在开发机中直接装各种数 ...

  4. HDU 4681 string 求最长公共子序列的简单DP+暴力枚举

    先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...

  5. JPEG文件格式

    格式:JFIF(JPEG档的交换格式)压缩:JPEG(灰阶影像压缩比约为10:1:彩色影像约为20:1)以JPEG文件格式保存的图像实际上是2个不同格式的混合物:JPEG格式规范本身,用来定义图像的压 ...

  6. ZH奶酪:【数据结构与算法】基础排序算法总结与Python实现

    1.冒泡排序(BubbleSort) 介绍:重复的遍历数列,一次比较两个元素,如果他们顺序错误就进行交换. 2016年1月22日总结: 冒泡排序就是比较相邻的两个元素,保证每次遍历最后的元素最大. 排 ...

  7. 根据IP获得城市信息(百度API的运用)

    /**      * 根据IP获取城市      * @param string $ip ip地址      * @return array      * http://api.map.baidu.c ...

  8. spark之 spark 2.2.0 Standalone安装、wordCount演示

    说明:前提安装好hadoop集群,可参考 http://blog.csdn.net/zhang123456456/article/details/77621487 一. scala 安装 1.下载 s ...

  9. Oracle 10g RAC OCR 和 VotingDisk 的备份与恢复

    Oracle RAC 中OCR 和Voting Disk 备份在我的blog: Oracle RAC 常用维护工具和命令 中已经有说明,现在再次把它单独拿出做一个说明, 因为OCR 和Voting D ...

  10. Jupyter和IPython

    Jupyter内核就是IPython(Interactive Python):你看到的按tab键能够自动提示/补齐都是IPython实现的. IPython其实不只限于IPython,其实你看到的ID ...