mongodb java 内嵌文档_MongoDB 内嵌文档
MongoDB是文档型的数据库系统,doc是MongoDB的数据单位,每个doc相当于关系型数据库的数据行(row),doc和row的区别在于field的原子性:row中的column是不和分割的原子对象,而doc中的field可以是原子对象,也可以是内嵌doc(embedded doc),数组等数据类型。内嵌doc中所有field的Key不允许重复。
例如以下doc,contact 字段是内嵌doc。
oneDoc={
name:"t1",
age:21,contact:
{
phone:123,
email:"xx@microsoft.com"}
}
--Insert a doc
db.foo.insert(OneDoc)
一,查询内嵌文档
1,如果内嵌doc存在field满足query filter,那么将doc返回。在引用内嵌doc中的field时,使用 dot notation,格式是:embedded_doc.field:value,如果内嵌doc的field也是内嵌文档,依次类推,embedded_doc1.embedded_doc2.field:value。
示例,查询contact 字段中phone是123的所有doc。
db.foo.find({"contact.phone":123})
2,限制返回的doc的field
示例,使用find的第二个参数Projection doc,只返回两个field:name 字段和内嵌doc的email字段。通过dot notation,将内嵌doc中的某些字段返回,格式是:embedded_doc.field:1,表示返回该字段,embedded_doc.field:0,表示不返回该字段。
db.foo.find({"contact.phone":123},{_id:0,"contact.email":1,name:1})
二,修改内嵌doc
upsert 选项非常有用,如果当前的doc中不存在内嵌文档,通过$set modifier 来增加;如果当前的doc中存在内嵌文档,通过$set modifier来修改内嵌文档的值。
1,修改doc,增加内嵌doc
示例,增加address字段,这是内嵌doc
db.foo.updateMany(
{name:"t1"},
{$set:{address:{province:"henan",city:"xinyang"}}},
{upsert:true}
)
2,修改内嵌doc中的字段
示例,修改内嵌doc中province 和 city 字段的内容,全部修改为"shanghai"
db.foo.updateMany(
{name:"t1"},
{$set:{address:{province:"shanghai",city:"shanghai"}}},
{upsert:true}
)
三,删除doc中的内嵌doc
$unset modifier能够删除doc中的字段,使用格式:{$unset:{field1:"", field2:""}},将删除的字段放在$unset文档中。
1,如果要删除内嵌doc中的field或数组中的元素,可以使用dot notation。
示例,删除address内嵌doc中的province 字段
db.foo.updateMany(
{name:"t1"},
{$unset:{"address.province":""}},
{upsert:true}
)
2,如果不使用dot notation,那么删除的将是整个内嵌doc
示例,在$unset modifier中,使用address 内嵌doc 格式,那么将删除address field。
db.foo.updateMany(
{name:"t1"},
{$unset:{address:{province:"shanghai"}}},
{upsert:true}
)
引用doc:
mongodb java 内嵌文档_MongoDB 内嵌文档相关推荐
- Android应用内打开.docx/.pdf/.xlsx/.txt等文档——腾讯TBS
Android应用内打开.docx/.pdf/.xlsx/.txt等文档-腾讯TBS 1.功能借鉴:https://blog.csdn.n ...
- wps批量将文档括号内的字符串修改颜色
wps批量将文档括号内的字符串修改颜色 文档内容如下,我们想把括号内的字符串全部修改为红色. 1)使用快捷键Ctrl+h,打开替换会话框. 输入查找的内容:((*)) 输出替换的内容:(\1) 然后点 ...
- 局域网内使用的多人协同编辑文档的软件哪个好?对比5款主流平台
支持局域网内多人协同编辑文档的软件或平台哪个好?PingCode .Confluence 等知识库工具和腾讯文档.飞书文档等都支持多人协作编辑,怎么选?这是企业团队在找文档管理工具最常见的问题. 支持 ...
- Django 2.1.3 文档-模板-内置标签和过滤器(tagfilter)
内置标签和过滤器 1.内置标签 一览 autoescape block comment csrf_token cycle debug extends filter(标签filter而不是过滤器filt ...
- AGM AG32VF407VGT6(248M主频MCU + 内置2KLE CPLD)开发入门文档
AGM AG32VF407VGT6(248M主频MCU + 内置2KLE CPLD)开发入门文档 第一章:器件特性概述 产品概述: AGM32系列32位微控制器旨在为MCU用户提供新的自由度和丰富的兼 ...
- vs2015c语言内嵌汇编,C#中内嵌资源的读取
起因 作为一个从Cpper转到C#并且直接从事WPF开发的萌新来说,正式编码过程中碰到了不少问题,一路上磕磕碰碰的.因为软件设计需求上的要求,需要将一些配置文件(XML.INI等)内嵌到程序中,等需要 ...
- MongoDB——文档操作(更新文档)
目录 一.更新文档命令的格式 二.更新操作符 三.更新单个文档 3.1.更新单个文档的示例 四.更新多个文档 4.1.更新多个文档的概述 4.2.更新多个文档的示例 五.使用upsert命令 5.1. ...
- Java使用freemarker生成word文档并转pdf文档
Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...
- java毕业设计社区健康管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
java毕业设计社区健康管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计社区健康管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈 ...
最新文章
- 关机充电如何实现短按pwrkey灭屏
- 服务器中显示存储设备,服务器节点信息集中显示方法、系统、设备及存储介质...
- c语言讲输入退回缓冲区_开始之前的结束-如何不退回输入错误的用户电子邮件...
- selenium动态网页爬虫复习
- 从零开始学Pytorch(四)之softmax与分类模型
- 月均数据_数据|| 焊接不锈钢管、卷板、棒相继被调查,出口印度的量逐年降!...
- 数据结构笔记(三十四)二叉排序树的删除
- 20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本...
- 深度对话“百度超级链” | 链上存证,司法效率助推器
- 3D Max 渲染和渲染农场渲染经常会出现白点?网渲和本地通用解决~
- Maxscript - 顶点法线修改脚本Normal Thief源码学习
- 嵌入式linux:通过qemu模拟mini2440开发环境
- 【UVM基础】工厂(factory)机制快速上手指南
- 泰康人寿java开发待遇怎么样_宋晓伟-泰康人寿-5年Java开发高级工程师-猿急送
- java——显示当前月的日历
- signature=664f9760ad1f1ac8fb5bff722b4da240,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
- 宝塔Linux面板的安装配置以及基本使用教程(超详细)
- 为什么CNN中的卷积核一般都是奇数?
- js动态设置select中option选中
- 应用之星:免费的傻瓜式在线制作电子书平台
热门文章
- CDH 端口未授权访问:hdfs-50070, yarn-8088, jetty漏洞修复
- 学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求
- Excel数据分析:四六级数据报告-201806
- 当提示“当前帐户被锁定,可能无法登录”时,如何解锁帐户?
- 《C/C++ 面试 100 例》(十一)标准输入加速
- 经纬度相关公式及实现
- 使用openGL,用Bresenham算法画椭圆
- 什么是口碑营销?如何做到产品口口相传
- 【数据结构笔记】3.栈和队列
- 计算机cpu的功能和作用是什么意思,cpu的功能有哪些