MongoDB 内嵌文档
来源:互联网 发布:淘宝南极人袜子怎么样 编辑:程序博客网 时间:2024/05/26 14:09
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 内嵌文档
- mongodb查询内嵌文档
- mongodb查询内嵌文档
- MongoDB查询内嵌文档
- MongoDB内嵌文档查询
- mongodb 查询内嵌文档
- mongoDB内嵌文档查询
- MongoDB查询内嵌文档
- MongoDB 内嵌文档查询
- mongodb操作内嵌数组文档解决方案
- Mongodb内嵌文档的查询
- mongodb数组与内嵌文档查询
- MongoDB查询(数组、内嵌文档和$where)
- mongodb 内嵌文档多条件查询($elemMatch)
- mongodb 统计内嵌文档中某一属性的方法
- MongoDB查询(数组、内嵌文档和$where)
- mongodb中根据内嵌文档中的条件查询
- MongoDB查询(数组、内嵌文档和$where)
- 耳朵是如何听到声音的
- sql中如何计算百分比 ,并保留两位小数
- MongoDB 数组
- Mac word文档异常退出如何恢复
- 错误代码: SEC_ERROR_REUSED_ISSUER_AND_SERIAL(解决办法)
- MongoDB 内嵌文档
- 线程基础:多任务处理(12)——Fork/Join框架(基本使用)
- gmapping源码分析以及收获
- DECLARE_META_INTERFACE(INTERFACE)和IMPLEMENT_META_INTERFACE(INTERFACE, NAME)宏定义分析
- PLC实验五(LED数码管显示控制)
- itellij idea导入web项目并部署到tomcat
- Dijkstra(迪杰斯特拉)算法
- JS学习九----JSON
- Ajax的概述