mongo笔记07( MongoDB 关系)
2017-12-20 16:06
141 查看
<\?php
/**
* MongoDB 关系
*/
/**
* MongoDB 的关系表示多个文档之间在逻辑上的相互联系。
* 文档间可以通过嵌入和引用来建立联系。
MongoDB 中的关系可以是:
1:1 (1对1)
1: N (1对多)
N: 1 (多对1)
N: N (多对多)
*/
/**
* 实例
*/
/**
* 接下来我们来考虑下用户与用户地址的关系。
* 一个用户可以有多个地址,所以是一对多的关系。
* 以下是 user 文档的简单结构:
{
“_id”:ObjectId(“52ffc33cd85242f436000001”),
“name”: “Tom Hanks”,
“contact”: “987654321”,
“dob”: “01-01-1991”
}
以下是 address 文档的简单结构:
{
“_id”:ObjectId(“52ffc4a5d85242602e000000”),
“building”: “22 A, Indiana Apt”,
“pincode”: 123456,
“city”: “Los Angeles”,
“state”: “California”
}
嵌入式关系
使用嵌入式方法,我们可以把用户地址嵌入到用户的文档中:
“_id”:ObjectId(“52ffc33cd85242f436000001”),
“contact”: “987654321”,
“dob”: “01-01-1991”,
“name”: “Tom Benzamin”,
“address”: [
{
“building”: “22 A, Indiana Apt”,
“pincode”: 123456,
“city”: “Los Angeles”,
“state”: “California”
},
{
“building”: “170 A, Acropolis Apt”,
“pincode”: 456789,
“city”: “Chicago”,
“state”: “Illinois”
}]
}
以上数据保存在单一的文档中,可以比较容易的获取和维护数据。 你可以这样查询用户的地址:
>db.users.findOne({“name”:”Tom Benzamin”},{“address”:1})
这种数据结构的缺点是,如果用户和用户地址在不断增加,数据量不断变大,会影响读写性能。
引用式关系
引用式关系是设计数据库时经常用到的方法,这种方法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系。
{
“_id”:ObjectId(“52ffc33cd85242f436000001”),
“contact”: “987654321”,
“dob”: “01-01-1991”,
“name”: “Tom Benzamin”,
“address_ids”: [
ObjectId(“52ffc4a5d85242602e000000”),
ObjectId(“52ffc4a5d85242602e000001”)
]
}
*/
/**
* MongoDB 关系
*/
/**
* MongoDB 的关系表示多个文档之间在逻辑上的相互联系。
* 文档间可以通过嵌入和引用来建立联系。
MongoDB 中的关系可以是:
1:1 (1对1)
1: N (1对多)
N: 1 (多对1)
N: N (多对多)
*/
/**
* 实例
*/
/**
* 接下来我们来考虑下用户与用户地址的关系。
* 一个用户可以有多个地址,所以是一对多的关系。
* 以下是 user 文档的简单结构:
{
“_id”:ObjectId(“52ffc33cd85242f436000001”),
“name”: “Tom Hanks”,
“contact”: “987654321”,
“dob”: “01-01-1991”
}
以下是 address 文档的简单结构:
{
“_id”:ObjectId(“52ffc4a5d85242602e000000”),
“building”: “22 A, Indiana Apt”,
“pincode”: 123456,
“city”: “Los Angeles”,
“state”: “California”
}
嵌入式关系
使用嵌入式方法,我们可以把用户地址嵌入到用户的文档中:
“_id”:ObjectId(“52ffc33cd85242f436000001”),
“contact”: “987654321”,
“dob”: “01-01-1991”,
“name”: “Tom Benzamin”,
“address”: [
{
“building”: “22 A, Indiana Apt”,
“pincode”: 123456,
“city”: “Los Angeles”,
“state”: “California”
},
{
“building”: “170 A, Acropolis Apt”,
“pincode”: 456789,
“city”: “Chicago”,
“state”: “Illinois”
}]
}
以上数据保存在单一的文档中,可以比较容易的获取和维护数据。 你可以这样查询用户的地址:
>db.users.findOne({“name”:”Tom Benzamin”},{“address”:1})
这种数据结构的缺点是,如果用户和用户地址在不断增加,数据量不断变大,会影响读写性能。
引用式关系
引用式关系是设计数据库时经常用到的方法,这种方法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系。
{
“_id”:ObjectId(“52ffc33cd85242f436000001”),
“contact”: “987654321”,
“dob”: “01-01-1991”,
“name”: “Tom Benzamin”,
“address_ids”: [
ObjectId(“52ffc4a5d85242602e000000”),
ObjectId(“52ffc4a5d85242602e000001”)
]
}
*/
相关文章推荐
- MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- MongoDB 中的关系
- MongoDB 关系-1对多的嵌入式
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- 5.非关系数据库(Nosql)它mongodb:创建一个集合,导出和导入备份, 数据恢复,进出口
- MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
- Golang下mongoDB的自生_id和string的关系
- 关系数据库和NoSQL结合使用:MySQL + MongoDB
- mongodb 免费可视化关系工具 Robo 3T
- MongoDB关系-1对多引用式关系应用
- MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
- mongodb与mysql传统的关系数据库区别
- 微服务-动态表单数据库设计模型(关系数据库和非关系数据模型MongoDB)
- 【NOSQL】非关系型数据库MongoDB ( 用MongoDB的文档结构描述数据关系 )
- spring-data-mongodb与mongo shell的对应关系
- MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
- 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
- mongodb与SQL对应关系表
- SQL与Mongodb聚合的对应关系(举例说明)