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. 【Go】Go基础(二):学习网址汇总
  2. 实战 Windows 10 Microsoft Edge 中的多媒体投影功能
  3. 剔除异常值栅格计算器_R语言系列 数据清洗3 异常值处理
  4. python 访问 zookeeper
  5. arduino蓝牙通讯代码_蓝牙4.0模块 无线数据传输模块 无线蓝牙串口 Arduino
  6. leetcode 897. 递增顺序搜索树(中序遍历)
  7. 摩托罗拉ex232java_摩托罗拉ex232r如何刷机?摩托罗拉ex232r评测
  8. LeetCode MySQL 614. 二级关注者
  9. elasticsearch控制返回字段查询三(英文分词)match查询
  10. OpenGL:读取图片显示
  11. Kata: 从随机的三字符列表组中恢复秘密字符串
  12. floquet端口x极化入射波_hfss和cst电磁媒质色散曲线dispersiondiagram研究方法.pdf
  13. Linux 抓包还不会?这篇文章赶紧收藏
  14. 什么是简单边界点(Simple border points)
  15. html单标签的语法并举例,HTML简介及举例
  16. Word排版技巧数模论文必备
  17. 【Windows系统资源】​​​​​​​iexplore.exe命令行参数解释
  18. 安装安全防护软件有助于保护计算机不受侵害,安装安全防护软件有助于保护计算机不受病毒侵害。...
  19. 解决运行python脚本报错:ModuleNotFoundError: No module named ‘numpy‘
  20. 【svn】 如何在Linux服务器上添加svn账户的教程

热门文章

  1. 生产者消费者3.0 阻塞队列版本
  2. python可以取代excel吗_python能彻底取代excel吗?
  3. 基于Cortex-A53内核Linux系统gec6818开发板的电子自助点餐设计
  4. python123用户登录c_写代码: 实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登录成功,否则登录失败。...
  5. html5 移动游戏,HTML5移动游戏时代到来了!
  6. pandas强大的Python数据分析工具
  7. 热更新原理及实践注意
  8. 怎么看电脑是32位还是64位?2个方法,快速查看
  9. python提取word中的表格写入excel
  10. 服务器虚拟化技术主要有什么优势