学习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 |
学习MongoDB 四: MongoDB查询(一)的更多相关文章
- Mongodb学习笔记四(Mongodb聚合函数)
第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...
- MongoDB学习记录(四) - MongoDB的"增查改删"操作之"改"
更新文档主要有以下几种方法: db.collection.updateOne(filter, update, options) db.collection.updateMany(filter, upd ...
- MYSQL初级学习笔记四:查询数据的操作DQL(SELECT基本形式)(26-35)
知识点六:查询数据的操作DQL(SELECT基本形式)(26-35) CREATE DATABASE IF NOT EXISTS cms DEFAULT CHARACTER SET utf8; USE ...
- 转MYSQL学习(四) 查询
MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属 ...
- Entity Framework学习笔记(四)----Linq查询(1)
请注明转载地址:http://www.cnblogs.com/arhat 从本章开始,老魏就介绍一下Entity Framework使用Linq来查询数据,也就是Linq To Entity.其实在E ...
- MongoDB (四) MongoDB 数据模型
在 MongoDB 中的数据有灵活的模式.在相同集合中文档并不需要有相同的一组字段或结构的公共字段的集合,文档可容纳不同类型的数据. MongoDB设计模式的一些考虑 可根据用户要求设计架构. 合并对 ...
- MySQL学习(四)查询
一.group_concat()函数.把groupby的分组中字段数据组合显示出来 select s_id , GROUP_CONCAT(要显示的字段名) from table group by 分 ...
- PHP中的PDO操作学习(四)查询结构集
关于 PDO 的最后一篇文章,我们就以查询结果集的操作为结束.在数据库的操作中,查询往往占的比例非常高.在日常的开发中,大部分的业务都是读多写少型的业务,所以掌握好查询相关的操作是我们学习的重要内容. ...
- MongoDB学习笔记四:索引
索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至 ...
- MongoDB学习【四】—pymongo操作mongodb数据库
一.pymongodb的安装 Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接. pip安装 pip 是一个通用的 Python 包管理工具, ...
随机推荐
- OO面向对象多线程编程作业总结
第五次作业:多线程电梯调度 设计策略 在本次电梯作业当中,我构造了一个电梯请求队列线程,一个调度器线程,三个电梯线程,一个文件输出线程,还有主线程. 调度器扫描用户的请求队列,将每个队列分配给 ...
- django会话跟踪技术
目录 django中的会话跟踪技术 什么是会话跟踪技术 HTTP无状态协议 Cookie概述 什么是cookie cookie源码 cookie超长时间 cookie超长时间 cookie生效路径 删 ...
- 按照Right-BICEP要求设计四则运算2程序的单元测试用例
Right——结果是否正确? B——是否所有的边界条件都是正确的? I——能查一下反响关联吗? C——能用其它手段交叉检查一下吗? E——你是否可以强制错误条件发生? P——是否满足性能要求? 测试计 ...
- TCP状态转化图 TIME_WAIT解析
先上转换图: 重点研究TIME_WAIT状态,根据UNIX网络编程中的思路,TIME_WAIT状态有两个存在的理由: 理由1. 客户端执行主动关闭,假设最终的ACK丢失,服务器将重新发送它的最后那个F ...
- .NET 中什么样的类是可使用 await 异步等待的?
我们已经知道 Task 是可等待的,但是去看看 Task 类的实现,几乎找不到哪个基类.接口或者方法属性能够告诉我们与 await 相关. 而本文将探索什么样的类是可使用 await 异步等待的? D ...
- ElasticSearch—分页查询
ElasticSearch查询—分页查询详解 Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如何实现分页查询呢? 按照一般的查询流程来说,如 ...
- 利用GPU改善程序性能的一点心得
1. 硬件方面 a. 流处理器个数 Gpu内部的计算单元个数,决定分析模块实时性的关键因素. 实测效果: gtx760 1152个 Gtx960 1024个 单路1080p运动 ...
- DD_belatedPNG解决IE6下PNG不透明问题
使用方法: 首先下载JS文件:http://dillerdesign.com/experiment/DD_belatedPNG/ 之后在页面中引用代码: <!--[if IE 6]>< ...
- Nginx基础学习
参考博客: http://www.2cto.com/os/201212/176520.html http://os.51cto.com/art/201111/304611.htm http://www ...
- Kettle入门教程
最近做的项目用到了ETL工具Kettle,这个工具相当好用,可以将各种类型数据作为数据流,经过处理后再生成各种类型的数据.正如其名“水壶”,将各个地方的水倒进水壶里,再用水壶倒入不同的容器.不过一来初 ...