1、一个文档如下

db.posts.find()
{
"_id" : ObjectId("5388162dfc164ee1f39be37f"),
"title" : "Java Example",
"content" : "This is a example for Java!",
"comments" : []
}

2、往_id等于"5388162dfc164ee1f39be37f"的文档中的comments插入数据

db.posts.update({"_id":ObjectId("5388162dfc164ee1f39be37f")},{$push:{"comments":{"content":"Good Article!","author":"Luxh"}}

 再插入一条

db.posts.update({"_id":ObjectId("5388162dfc164ee1f39be37f")},{$push:{"comments":{"content":"Not bad!","author":"Chuliuxiang"}}})

 结果如下

db.posts.find()

{
"_id" : ObjectId("5388162dfc164ee1f39be37f"),
"title" : "Java Example",
"content" : "This is a example for Java!",
"comments" : [
{
"content" : "Good Article!",
"author" : "Luxh"
},
{
"content" : "Not bad!",
"author" : "Chuliuxiang"
}
]
}

3、根据内嵌文档查询

  1)查询出Luxh评论过的文章

db.posts.find({"comments.author":"Luxh"})

结果如下:
{
"_id" : ObjectId("5388162dfc164ee1f39be37f"),
"title" : "Java Example",
"content" : "This is a example for Java!",
"comments" : [
{
"content" : "Good Article!",
"author" : "Luxh"
},
{
"content" : "Not bad!",
"author" : "Chuliuxiang"
}
]
}

  2)查询Luxh评论过的文章,返回指定的键

db.posts.find({"comments.author":"Luxh"},{"title":1,"content":1})

结果如下:

{
"_id" : ObjectId("5388162dfc164ee1f39be37f"),
"title" : "Java Example",
"content" : "This is a example for Java!"
}

  _id默认会返回。取消可设置"_id":0

4、修改

  将author=Luxh评论的内容content修改为"I like it!"

db.posts.update({"comments.author":"Luxh"},{$set:{"comments.$.content":"I like it!"}})

结果如下:
{
"_id" : ObjectId("5388162dfc164ee1f39be37f"),
"title" : "Java Example",
"content" : "This is a example for Java!",
"comments" : [
{
"content" : "I like it!",
"author" : "Luxh"
},
{
"content" : "Not bad!",
"author" : "Chuliuxiang"
}
]
}

5、删除

  删除comments中author=Luxh的记录

db.posts.update({},{$pull:{"comments":{"author":"Luxh"}}})

结果如下:

{
"_id" : ObjectId("5388162dfc164ee1f39be37f"),
"title" : "Java Example",
"content" : "This is a example for Java!",
"comments" : [
{
"content" : "Not bad!",
"author" : "Chuliuxiang"
}
]
}

Mongdb操作嵌套文档的更多相关文章

  1. MongDb添加嵌套文档

         想添加嵌套文档,就需要创建2个实体类.如下图 usermodel.Student = student; 其中Student的类型就是StudentModel: 第一个实体类         ...

  2. javascript DOM操作HTML文档

    文档对象模型(DOM)是W3C为解决浏览器混战时代不同浏览器环境之间的差别而制定的模型标准.W3C将文档对象模型定义为:是一个能让程序和脚本动态 访问和更新文档内容.结构和样式的语言平台.提供了标准的 ...

  3. MongoDB(10)- 查询嵌套文档

    插入测试数据 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: & ...

  4. 操作xml文档的常用方式

    1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...

  5. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...

  6. 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox

    原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...

  7. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  8. C#操作Word文档(加密、解密、对应书签插入分页符)

    原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...

  9. js介绍,js三种引入方式,js选择器,js四种调试方式,js操作页面文档DOM(修改文本,修改css样式,修改属性)

    js介绍 js运行编写在浏览器上的脚本语言(外挂,具有逻辑性) 脚本语言:运行在浏览器上的独立的代码块(具有逻辑性) 操作BOM 浏览器对象盒子 操作DOM 文本对象 js三种引入方式 (1)行间式: ...

随机推荐

  1. python数据类型之list

    1.append:增加元素到列表尾部 L.append(object) -> None -- append object to end 2.clear:清空列表中所有元素 3.count:返回列 ...

  2. javascript模块化编程(AMD规范的加载器)

    关于AMD规范可以参考阮一峰的这篇文章Javascript模块化编程(二):AMD规范 简单来说,AMD规范就是异步方式加载模块的一种方式,避免因为模块加载过慢而导致浏览器“假死”. 先贴一个学习地址 ...

  3. shiro权限验证标签

    实例: spring-shiro.xml /admin/repairType/index = roles["ROLE_ADMIN"] /admin/user=roles[" ...

  4. Zabbix的安装与部署---问题处理(php65.6.28 mysqli 报错误 处理)

    1)php65.6.28  mysqli  报错误 处理 http://www.xiaochengfu.com/index.php/index/detail/aid/92.html 2)linux下p ...

  5. [extjs] ExtJS4 treepanel 子节点选中父节点自动选中,选中父节点 子节点自动全部选中

    ExtJS4 treepanel 主要添加viewConfig重的代码: xtype:'treepanel', store: menuStore, id:'menuTreePanel', viewCo ...

  6. jquery中关于append()的用法笔记---append()节点移动与复制之说

    jquery中关于append()的用法笔记---append()节点移动与复制之说 今天看一本关于jquery的基础教程,看到其中一段代码关于append()的一行,总是百思不得其解.于是查了查官方 ...

  7. c# 可以设置透明度的 Panel 组件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  8. IOS的沙盒机制

    ios的沙盒(bandbox)机制:一种安全体系,ios应用程序只能对自己创建的应用程序进行读取文件,这个独立.封闭.安全的空间,就我们说的沙盒.它里面一般存放着你的程序需要的文件,数据持久化的一些文 ...

  9. WPF性能改善---之化整为零(蜂窝的衍生应用)

    在有的项目中,有这样的需求,由于显示器的显示区域是有限的,而软件却要展示一个远大于显示区域的一些元素,此时就要引入放大.缩小.拖动等UI控制技术,而在使用这些技术的同时,在后台有效的控制渲染元素的个数 ...

  10. rsync 同步文件

    rsync 同步文件 rsync -avz roo@192.168.4.12::/home/a ./a  --exclude "data" exclude 去掉/a/data 文件 ...