文档章节

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 } }


































































© 著作权归作者所有

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

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

a独家记忆
07/12
0
0
MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中。但是当文件太大时,例如图片...

开元中国2015
2015/07/25
0
0
福利丨MongoDB赎金事件的背后,DBA们该如何反思?

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

DBAplus社群
2017/01/12
0
0
mongodb在linux下安装

mongodb linux 安装 下载 cd /usr/local/src wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.9.tgz tar -xzvf mongodb-linux-i686-2.4.9.tgz mv mongodb-linux-i686-2.4.9 .......

Le_Guto
2014/01/24
0
0
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)

Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图。那么如何在Asp.Net Core Web Api实现图片上传存...

依乐祝
07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java异常处理最佳实践

总结一些Java异常的处理原则 Java异常处理最佳实践 不要忘记关闭资源 在finally里关闭资源 public void readFile() { FileInputStream fileInputStream = null; File file = new Fil...

yysue
59分钟前
1
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
124
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部