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 内嵌文档相关推荐

  1. Android应用内打开.docx/.pdf/.xlsx/.txt等文档——腾讯TBS

                                   Android应用内打开.docx/.pdf/.xlsx/.txt等文档-腾讯TBS 1.功能借鉴:https://blog.csdn.n ...

  2. wps批量将文档括号内的字符串修改颜色

    wps批量将文档括号内的字符串修改颜色 文档内容如下,我们想把括号内的字符串全部修改为红色. 1)使用快捷键Ctrl+h,打开替换会话框. 输入查找的内容:((*)) 输出替换的内容:(\1) 然后点 ...

  3. 局域网内使用的多人协同编辑文档的软件哪个好?对比5款主流平台

    支持局域网内多人协同编辑文档的软件或平台哪个好?PingCode .Confluence 等知识库工具和腾讯文档.飞书文档等都支持多人协作编辑,怎么选?这是企业团队在找文档管理工具最常见的问题. 支持 ...

  4. Django 2.1.3 文档-模板-内置标签和过滤器(tagfilter)

    内置标签和过滤器 1.内置标签 一览 autoescape block comment csrf_token cycle debug extends filter(标签filter而不是过滤器filt ...

  5. AGM AG32VF407VGT6(248M主频MCU + 内置2KLE CPLD)开发入门文档

    AGM AG32VF407VGT6(248M主频MCU + 内置2KLE CPLD)开发入门文档 第一章:器件特性概述 产品概述: AGM32系列32位微控制器旨在为MCU用户提供新的自由度和丰富的兼 ...

  6. vs2015c语言内嵌汇编,C#中内嵌资源的读取

    起因 作为一个从Cpper转到C#并且直接从事WPF开发的萌新来说,正式编码过程中碰到了不少问题,一路上磕磕碰碰的.因为软件设计需求上的要求,需要将一些配置文件(XML.INI等)内嵌到程序中,等需要 ...

  7. MongoDB——文档操作(更新文档)

    目录 一.更新文档命令的格式 二.更新操作符 三.更新单个文档 3.1.更新单个文档的示例 四.更新多个文档 4.1.更新多个文档的概述 4.2.更新多个文档的示例 五.使用upsert命令 5.1. ...

  8. Java使用freemarker生成word文档并转pdf文档

    Java使用freemarker生成word文档后转pdf 先来看看效果图 进入正题 项目需求: 为订单后生成对应的pdf文档,文档内包含图片. 方案一:使用freemarker和itext把html ...

  9. java毕业设计社区健康管理系统源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计社区健康管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计社区健康管理系统源码+lw文档+mybatis+系统+mysql数据库+调试 本源码技术栈 ...

最新文章

  1. 关机充电如何实现短按pwrkey灭屏
  2. 服务器中显示存储设备,服务器节点信息集中显示方法、系统、设备及存储介质...
  3. c语言讲输入退回缓冲区_开始之前的结束-如何不退回输入错误的用户电子邮件...
  4. selenium动态网页爬虫复习
  5. 从零开始学Pytorch(四)之softmax与分类模型
  6. 月均数据_数据|| 焊接不锈钢管、卷板、棒相继被调查,出口印度的量逐年降!...
  7. 数据结构笔记(三十四)二叉排序树的删除
  8. 20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本...
  9. 深度对话“百度超级链” | 链上存证,司法效率助推器
  10. 3D Max 渲染和渲染农场渲染经常会出现白点?网渲和本地通用解决~
  11. Maxscript - 顶点法线修改脚本Normal Thief源码学习
  12. 嵌入式linux:通过qemu模拟mini2440开发环境
  13. 【UVM基础】工厂(factory)机制快速上手指南
  14. 泰康人寿java开发待遇怎么样_宋晓伟-泰康人寿-5年Java开发高级工程师-猿急送
  15. java——显示当前月的日历
  16. signature=664f9760ad1f1ac8fb5bff722b4da240,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  17. 宝塔Linux面板的安装配置以及基本使用教程(超详细)
  18. 为什么CNN中的卷积核一般都是奇数?
  19. js动态设置select中option选中
  20. 应用之星:免费的傻瓜式在线制作电子书平台

热门文章

  1. CDH 端口未授权访问:hdfs-50070, yarn-8088, jetty漏洞修复
  2. 学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求
  3. Excel数据分析:四六级数据报告-201806
  4. 当提示“当前帐户被锁定,可能无法登录”时,如何解锁帐户?
  5. 《C/C++ 面试 100 例》(十一)标准输入加速
  6. 经纬度相关公式及实现
  7. 使用openGL,用Bresenham算法画椭圆
  8. 什么是口碑营销?如何做到产品口口相传
  9. 【数据结构笔记】3.栈和队列
  10. 计算机cpu的功能和作用是什么意思,cpu的功能有哪些