Mongdb操作嵌套文档
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操作嵌套文档的更多相关文章
- MongDb添加嵌套文档
想添加嵌套文档,就需要创建2个实体类.如下图 usermodel.Student = student; 其中Student的类型就是StudentModel: 第一个实体类 ...
- javascript DOM操作HTML文档
文档对象模型(DOM)是W3C为解决浏览器混战时代不同浏览器环境之间的差别而制定的模型标准.W3C将文档对象模型定义为:是一个能让程序和脚本动态 访问和更新文档内容.结构和样式的语言平台.提供了标准的 ...
- MongoDB(10)- 查询嵌套文档
插入测试数据 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: & ...
- 操作xml文档的常用方式
1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...
- 文档对象模型操作xml文档
简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...
- 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox
原文 操作PDF文档功能的相关开源项目探索——iTextSharp 和PDFBox 很久没自己写写心得日志与大家分享了,一方面是自己有点忙,一方面是自己有点懒,没有及时总结.因为实践是经验的来源,总结 ...
- iText操作word文档总结
操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...
- C#操作Word文档(加密、解密、对应书签插入分页符)
原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...
- js介绍,js三种引入方式,js选择器,js四种调试方式,js操作页面文档DOM(修改文本,修改css样式,修改属性)
js介绍 js运行编写在浏览器上的脚本语言(外挂,具有逻辑性) 脚本语言:运行在浏览器上的独立的代码块(具有逻辑性) 操作BOM 浏览器对象盒子 操作DOM 文本对象 js三种引入方式 (1)行间式: ...
随机推荐
- js和css内联外联注意事项
简单说:这两个问题其实是同一个问题,但是网上找了好久也找不到方法,外联的js和css文件里不能有任何HTML的标记注释,一旦有,浏览器就疯了!一去掉就好了!!! 问题:起因是网上看到一个css的表格样 ...
- Redis Cluster 在PHP上的实践
版本:redis3.0.3 redis——slot: 'master' => [ '192.168.1.55:7000'=>[0,5460], '192.168.1.55:7001'=&g ...
- Subversion与TortoiseSVN的安装
首先介绍一下Subversion与TortoiseSVN两者之间的关系: Subversion是一种集中分享信息的系统,它的核心是版本库,储存所有的数据.版本库按照文件树形式储存数据-包括文件和目录. ...
- Hibernate3回顾-3-Session管理
3.Session管理 仅为个人理解.请指正 3.1背景 由于Configuration的创建耗费系统的资源.所以有必要只将Configuration实例化一次,之后通过SessionFactory获 ...
- c#.net 调用BouncyCastle生成PEM格式的私钥和公钥
RsaKeyPairGenerator r = new RsaKeyPairGenerator(); r.Init()); AsymmetricCipherKeyPair keys = r.Gener ...
- POJ #1141 - Brackets Sequence - TODO: POJ website issue
A bottom-up DP. To be honest, it is not easy to relate DP to this problem. Maybe, all "most&quo ...
- 剑指offer系列31-----二叉树的下一个节点
[题目]给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回. 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. package com.exe7.offer; /** ...
- sublime text 3 安装注释
sublime text 3 1.安装Sublime Text 3 下载安装:http://www.sublimetext.com/3 Package Control安装:https://subli ...
- python(6)时间戳和北京时间互转,输出当前的时间和推到七天前的日期
项目发展的需要:(包含时间函数)time datetime 时间戳和北京时间互转 import time import datetime s = '2015-04-17 11:25:30' d = d ...
- 别去研究C++
转载 YH,今天早晨起来.回想昨天,虽然吐槽了 C++ 的各种问题,但给别人打工,还是要靠 C++ 干活吃饭.我对待 C++ 的态度和云风不同,虽然他所说的 C++ 技术的事情我都懂都理解,而我感受到 ...