MongoDB-3: 查询(一)
一、简介
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-3: 查询(一)的更多相关文章
- TODO:MongoDB的查询更新删除总结
TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- Mongodb高级查询【二】
上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...
- mongoDB高级查询$type4array使用解析
今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...
- MongoDb 命令查询所有数据库列表
原文:http://blog.csdn.net/huxu981598436/article/details/47216493 MongoDb 命令查询所有数据库列表 CODE: > show d ...
- mongodb并列查询,模糊查询
在mongodb的查询语句中可以这么写{“a”:$gt(1),"a":$lt(5)} 但这么查询出来的值会做单个条件匹配,最终结果为a大于1的集合+a小于5的集合 如果需要实现去交 ...
- mongodb中查询返回指定字段
mongodb中查询返回指定字段 在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段. ...
- MongoDB 数据类型查询 — $type使用
MongoDB 使用过程中经常需要根据字段的类型来查询数据, 而MongoDB中查询字段类型是通过$type操作符来实现. $type使用法语: db.集合名.find({$type:类型值}); / ...
- mongoDB 高级查询语法
http://www.cnblogs.com/ITAres/articles/2084794.html本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Ad ...
- 转】Nodejs对MongoDB模糊查询
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/ 感谢! Posted: Jul 1, 2013 Tag ...
随机推荐
- poj 1182 食物链 并查集的又一个用法
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 41584 Accepted: 12090 Descripti ...
- vue天坑系列
vue运行四元素:main.js+router/index.js+index.html+App.vue缺一不可:
- 基于Html5+HLS协议播放符合部标1078协议的实时流媒体视频
由于现在主流的部标GPS和1077视频监控平台,都是BS架构,在网页上播放视频,早期的很多平台用的都是ActiveX控件的形式,依赖于IE浏览器,需要降低浏览器的安全设置,而且非常难用.同时由于win ...
- VMware12环境下安装CentOS7的vmware-tools
一.最小化安装 1.进入系统之后,要配置network网络. 首先ping www.baidu.com (Ctrl+z 推出正在执行的命令) 如果ping不通,则修改: vi /etc/ ...
- flutter 环境
以下内容copy 于 https://www.cnblogs.com/lovelyYakir/p/7610396.html 原文请参考此 我只是做个记录 第一步:安装Git 你需要安装Git作为Flu ...
- Codeforces839D Winter is here 容斥
/** 题目:Codeforces839D Winter is here 链接:http://codeforces.com/contest/839/problem/D 题意:给定n个数,求所有的最大公 ...
- centos7.2 安装 Elasticsearch5.2
打算上全文检索,就找到了找个产品,开始研究下…… 1.官网地址: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/install ...
- 第一百四十四节,JavaScript,列队动画
JavaScript,列队动画 将上一节的,移动透明动画,修改成可以支持列队,也就是可以给这个动画方法多个动画任务,让它完成一个动画任务后,在执行第二个动画任务 原理: 就是在原有的动画方法里加一个回 ...
- [CB2]start up
1.更新源 From:http://cubie.cc/forum.php?mod=viewthread&tid=3054&extra= sudo emacs 打开/etc/apt/so ...
- 第10步:DBCA创建实例
注意,创建磁盘组时需要以oracle用户身份执行,在那之前可能需要以root身份执行xhost+,即命令: 代码1 [root@sgdb1~]# xhost+ [root@sgdb1~]# su - ...