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数据库+调试 本源码技术栈 ...
最新文章
- 【Go】Go基础(二):学习网址汇总
- 实战 Windows 10 Microsoft Edge 中的多媒体投影功能
- 剔除异常值栅格计算器_R语言系列 数据清洗3 异常值处理
- python 访问 zookeeper
- arduino蓝牙通讯代码_蓝牙4.0模块 无线数据传输模块 无线蓝牙串口 Arduino
- leetcode 897. 递增顺序搜索树(中序遍历)
- 摩托罗拉ex232java_摩托罗拉ex232r如何刷机?摩托罗拉ex232r评测
- LeetCode MySQL 614. 二级关注者
- elasticsearch控制返回字段查询三(英文分词)match查询
- OpenGL:读取图片显示
- Kata: 从随机的三字符列表组中恢复秘密字符串
- floquet端口x极化入射波_hfss和cst电磁媒质色散曲线dispersiondiagram研究方法.pdf
- Linux 抓包还不会?这篇文章赶紧收藏
- 什么是简单边界点(Simple border points)
- html单标签的语法并举例,HTML简介及举例
- Word排版技巧数模论文必备
- 【Windows系统资源】​​​​​​​iexplore.exe命令行参数解释
- 安装安全防护软件有助于保护计算机不受侵害,安装安全防护软件有助于保护计算机不受病毒侵害。...
- 解决运行python脚本报错:ModuleNotFoundError: No module named ‘numpy‘
- 【svn】 如何在Linux服务器上添加svn账户的教程
热门文章
- 生产者消费者3.0 阻塞队列版本
- python可以取代excel吗_python能彻底取代excel吗?
- 基于Cortex-A53内核Linux系统gec6818开发板的电子自助点餐设计
- python123用户登录c_写代码: 实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登录成功,否则登录失败。...
- html5 移动游戏,HTML5移动游戏时代到来了!
- pandas强大的Python数据分析工具
- 热更新原理及实践注意
- 怎么看电脑是32位还是64位?2个方法,快速查看
- python提取word中的表格写入excel
- 服务器虚拟化技术主要有什么优势