文档章节

mongodb的一些知识

Tony2015
 Tony2015
发布于 2015/05/05 14:16
字数 1028
阅读 26
收藏 0
1.指定等于查询条件
 
要指定相等查询条件,使用查询文档 { <field>: <value> } 查询所有包含 <field> 字段并且值等于 <value> 的集合
下面的示例从 inventory 集合中检索所有字段 type 值为的文档 snacks
 
db.inventory.find( { type:  "snacks"   } );
 
2.在同字段上使用相等条件查询时更宁愿使用 $ in   查询操作符不用$ or
  inventory 集合中 type 字段值为  'food'   或  'snacks'   的所有文档:
 
db.inventory.find( { type: { $ in : [  'food' 'snacks'   ] } }
 
3.指定与查询条件
复合查询可指定文档中多个字段作为查询条件。使用  AND   逻辑连接复合查询的条件子句,以筛选出集合中所有符合查询条件的文档
查询选取所有 type 字段等于  'food'   并且 price 字段值小于 9.95 的文档
 
db.inventory.find( { type:  'food' , price: { $lt: 9.95 } } )
 
4.指定或查询条件
使用 $ or   操作符,可通过  OR   逻辑连接每个子句以指定一个复合查询,查询将筛选集合中至少匹配一个查询条件的文档
查询文档筛选出集合中 qty 字段值大于 ($gt) 100 或 price 字段小于 ($lt) 9.95 的所有文档:
 
db.inventory.find(
    {
      $ or : [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
    }
)
 
5.同时指定 与和或查询条件
复合查询文档筛选出集合中 type 字段值为  'food'
  并且 qty 字段的值大于 ($gt) 100 或  price 的值小于 ($lt) ``9.95``的所有文档:
db.inventory.find(
    {
      type:  'food' ,
      $ or : [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]
    }
)

6.内嵌文档
a.精确匹配 用查询文档 { <field>: <value> },其中 <value> 是用于匹配的文档。相等匹配要求 <value> 文档与内嵌文档 完全 匹配,包括字段顺序。
在如下示例中,查询将匹配 producer 字段为内嵌文档,并 包含 company 和 address 字段(字段顺序相同),且值分别为 'ABC123' 与 '123 Street' 的所有文档

db.inventory.find(
    {
      producer:
        {
          company: 'ABC123',
          address: '123 Street'
        }
    }
)

b.相等匹配
下面示例中,查询使用 dot notation 匹配 producer 字段为内嵌文档,该内嵌文档中包含 company 字段(可包含其他字段)且值为 'ABC123' 的所有文档:


db.inventory.find( { 'producer.company': 'ABC123' } )




7.数组
考虑集合 inventory 包含如下文档
{ _id: 5, type: "food", item: "aaa", ratings: [ 5, 8, 9 ] }
{ _id: 6, type: "food", item: "bbb", ratings: [ 5, 9 ] }
{ _id: 7, type: "food", item: "ccc", ratings: [ 9, 5, 8 ] }



数组的精确匹配
下面示例将筛选出 ratings 字段为数组,包含 5, 8, 9 三个元素并且元素顺序符合该顺序的所有文档:
db.inventory.find( { ratings: [ 5, 8, 9 ] } )

{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }



匹配数组元素
相等匹配可以指定数组中单一元素进行匹配。这些相等匹配将匹配包含至少一个元素等于指定值的数组
下面示例查询数组字段 ratings 中元素之一为 5 的所有文档
db.inventory.find( { ratings: 5 } )
操作将返回如下文档:
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
{ "_id" : 6, "type" : "food", "item" : "bbb", "ratings" : [ 5, 9 ] }
{ "_id" : 7, "type" : "food", "item" : "ccc", "ratings" : [ 9, 5, 8 ] }


匹配数组指定元素
在下面示例中,查询使用 dot notation 匹配数组字段 ratings 的第一个元素为 5 的所有文档:
db.inventory.find( { 'ratings.0': 5 } )
操作将返回如下文档:

{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
{ "_id" : 6, "type" : "food", "item" : "bbb", "ratings" : [ 5, 9 ] }
满足条件的元素组合
下面示例将查询 ratings 中包含某些元素组合满足查询条件的文档;比如,一个元素满足大于 5 的条件,另外元素满足小于 9 的条件,或一个元素同时满足两个条件;
 db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } )

 操作将返回如下文档
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
{ "_id" : 6, "type" : "food", "item" : "bbb", "ratings" : [ 5, 9 ] }
{ "_id" : 7, "type" : "food", "item" : "ccc", "ratings" : [ 9, 5, 8 ] }

8.限制查询返回的字段
对于包含数组的字段,MongoDB提供了如下的投影操作符: $elemMatch$slice 以及 $
{ "_id" : 5, "type" : "food", "item" : "aaa", "ratings" : [ 5, 8, 9 ] }
下面的操作使用 $slice 映射操作符以仅仅返回 ratings 数组里的前两个元素。
db.inventory.find( { _id: 5 }, { ratings: { $slice: 2 } }


































































© 著作权归作者所有

共有 人打赏支持
上一篇: mongo查询学习
Tony2015
粉丝 1
博文 50
码字总数 28618
作品 0
杭州
程序员
私信 提问
阿里专家视频课限时抢!精讲+实操12节课学懂MongoDB数据库!

想要学习MongoDB却不知道如何入门? 漫天的培训课程却无一讲解实战案例? 云栖社区联手阿里云大学独家出品—— 阿里云MongoDB技术负责人、MongoDB中文社区联席主席联合操刀 12期精讲+实操,全...

a独家记忆
2018/07/12
0
0
《阿里巴巴MongoDB4.0高级实战:基于Java Spring Boot 2.0》运维、监控、聚合、集群、监控等高级面试题

《阿里巴巴MongoDB4.0高级实战》阿里巴巴技术大牛 资深专家P9叶翔、专家徐雷. NoSQL排名第一!最流行的NoSQL数据库;谷歌、阿里巴巴、蚂蚁金服、腾讯、百度等一线互联网公司必备技能。 本系列...

徐雷frank
2018/11/01
0
0
2017Mongoing中文社区用户组大会--武汉站

MongoDB是全球成长最快的 NoSQL 数据库。 MongoDB线下用户组是由全世界MongoDB爱好者发起的不定期线下交流活动。 目前全球有100多个MongoDB用户组,3万5千多爱好者参与。 用户组活动的形式通...

MongoDB中文社区
2017/10/20
1
0
是时候跟 MongoDB 说再见了

在过去的两到三年的时间内,我一直在一个中等规模的项目中使用 MongoDB。 但因为各种技术上的原因,到了和 MongoDB 说再见的时候了,我的原因有以下几点: MongoDB 当前的内存模型基于内存映...

oschina
2012/05/20
21.5K
59
福利丨MongoDB赎金事件的背后,DBA们该如何反思?

最近MongoDB赎金事件闹得沸沸扬扬,一些技术实践者的观点是,本次安全事件的根源不在MongoDB,可能在于不规范的操作和使用,而一些安全战略师则反驳这是意料之中的事故。对此,你怎么看?DBA...

DBAplus社群
2017/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
21
3
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
5
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
5
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
5
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部