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. jquery淡入淡出

    html代码: <button id="b1" type="button">淡出</button> <button id=&quo ...

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

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

  3. bzoj2338 数矩形

    给出N(N≤1500)个点,求选四个点作为顶点组成矩形的最大面积,保证有解. 对每两个点连边,按边长排序,枚举等长且中点相同的边作为对角线组成矩形,计算面积取最大值. 时间复杂度O(n2logn) # ...

  4. win8以管理员身份安装软件

    win8以管理员身份安装软件 msiexec /package

  5. 黄聪:wordpress/wp-admin目录文件

    wp-admin/admin.php:管理文件的核心文件.用来连接数据库,整合动态菜单数据,显示非核心控制页面等. wp-admin/admin-db.php wp-admin/admin-foote ...

  6. HTML ISO-8859-1 参考手册

    HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集. ISO-8859-1 的较低部分(从 1 到 127 之间的代码)是最初的 7 比特 ASCII. ISO-8859-1 ...

  7. RMAN_Oracle RMAN的常用Command命令

    2014-12-11 Created By BaoXinjian

  8. CE_现金预测详解(案例)

    2014-07-14 Created By BaoXinjian

  9. AP_AP系列 - 相关设定的简述(概念)

    2014-07-08 Created By BaoXinjian

  10. RVMDK的DEBUG调试-实时数据查看

    无论在Simulation还是硬件仿真的情况下,View-period windows update后watch窗口添加的变量即可实时更新, 软仿真和硬件仿真的区别就是实际时间的差异:如RTC查看秒的 ...