加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MongoDB 关系

发布时间:2020-12-13 12:42:51 所属栏目:百科 来源:网络整理
导读:《MongoDB 关系》要点: 本文介绍了MongoDB 关系,希望对您有用。如果有疑问,可以联系我们。 MongoDB 的关系表现多个文档之间在逻辑上的相互联系. 文档间可以通过嵌入和引用来树立联系. MongoDB 中的关系可以是: 1:1 (1对1) 1: N (1对多) N: 1 (多对1) N:

《MongoDB 关系》要点:
本文介绍了MongoDB 关系,希望对您有用。如果有疑问,可以联系我们。

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"}

MongoDB 关系

嵌入式关系

使用嵌入式办法,我们可以把用户地址嵌入到用户的文档中:

"_id":ObjectId("52ffc33cd85242f436000001"),

"dob": "01-01-1991",

"name": "Tom Benzamin",

"address": [

{

"building": "22 A,

"state": "California"

},

{

"building": "170 A,Acropolis Apt",

"pincode": 456789,

"city": "Chicago",

"state": "Illinois"

}]}

以上数据保留在单一的文档中,可以比较容易的获取和维护数据. 你可以这样查询用户的地址:

>db.users.findOne({"name":"Tom Benzamin"},{"address":1})

注意:以上查询中 dbusers 表现数据库和集合.

这种数据结构的缺点是,如果用户和用户地址在赓续增加,数据量赓续变大,会影响读写性能.

MongoDB 关系

引用式关系

引用式关系是设计数据库时经常用到的办法,这种办法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系.

{

"_id":ObjectId("52ffc33cd85242f436000001"),

"address_ids": [

ObjectId("52ffc4a5d85242602e000000"),

ObjectId("52ffc4a5d85242602e000001")

]}

以上实例中,用户文档的 address_ids 字段包括用户地址的对象id(ObjectId)数组.

我们可以读取这些用户地址的工具id(ObjectId)来获取用户的详细地址信息.

这种办法需要两次查询,第一次查询用户地址的对象id(ObjectId),第二次通过查询的id获取用户的详细地址信息.

>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})>var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})

如您还有不明确的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

欢迎参与《MongoDB 关系》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读