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:

$set

$unset

 

作者悦光阴
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类: MongoDB





本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/5042931.html,如需转载请自行联系原作者
帮助开发人员生成完美的在线帮助文档 ComponentOne Doc-To-Help 是技术文档编辑员、帮助文档作者以及软件开发人员的首选。新版本中又增加了几十种新功能,提供了更佳的性能和可靠性。现在您能够在更为强大的环境中,依据单一来源创建您的帮助系统以及高质量的打印文档,比以往更为灵活。单一来源对于技术文档非常重要,因为这也就意味着节省时间、降低成本、提高产量。同样,您可以更快速地处理大量的图象文档,自定义HTML主题,充分利用新的所见即所得WSIWYG文档编辑器,包括内置的格式,可设置“文档的主题”以及子标题、跳转等多种功能。 特性: 支持单一来源 无论是创建HTML帮助文档、跨平台基于HTML的帮助文档,, WinHelp, JavaHelp™;和打印文档,都可以由Word文档作为唯一的来源进行维护,使得结果更为清晰。 内置或自定义模版 ComponentOne Doc-To-Help 6.5包括了一系列模版,用以生成高质量的打印文档。 无以伦比的条件文本功能 可指定特殊平台或输出目标的文档区域范围。并能自设定文本条件的标准,构造真正的单一来源的解决方案。 直观的用户界面和Word工具条 ComponentOne Doc-To-Help 6.5重新设计了“万项归一”的界面,指间移动之间便可拥有使用众多功能,而无须到大量的对话框中一一索取。 完全的Windows XP 和Office XP支持 快速地构建 无需重新购建整个项目,只需重建修改过的文档即可。从而可减少时间,增强开发。 Microsoft®; 2.0帮助文档 ComponentOne Doc-To-Help 6.5 已经可以支持 Microsoft Help 2.0 帮助文档数据库架构 ComponentOne Doc-To-Help 6.5独有的项目架构存储了类型、主题、索引关键词和项目数据库中内容条目表之间的所有关系。可自动生成索引条目、超级链接标签、转向和弹出等功能。 项目编辑器 在单一的界面中,便可进行大范围的帮助文档任务,使得编辑源文档、设置帮助目标文档的属性都异常容易! 增强的图象功能 无须在图象添加至文档之间,预先在图象包中调整图象,使用Microsoft Word中插入图片和格式图片选项便可实现。 可自定义的HTML主题 提供链接、跳转、弹出以及更多内容 术语表 增强的索引功能 当您的源文件已经编译,各级主题信息以及现有XE字段数据都可以被抽取保存到项目的数据库中。 脚本 如果您是编程人员,ComponentOne Doc-To-Help 6.5甚至可让您使用Microsoft Visual Basic®;脚本,在编译的时候自定义个性化样式。 模块化帮助项目 ComponentOne Doc-To-Help 6.5可以处理模块帮助项目,所以你不再需要在Notepad中编辑帮助编译文件。 转换工具 只需点击按钮就可以方便地转换现有的Doc-To-Help 2000项目! 有用的报表 您可以通过带有内容、索引、脚本、样式和主题信息的报表来组织大规模的项目。并可以创建多级的数据显示。并可打印预览任何报
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值