MongoDB 关系

前端之家收集整理的这篇文章主要介绍了MongoDB 关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

《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学院为您提供专业教程。

猜你在找的MongoDB相关文章