MongoDB 关系

MongoDB 关系,第1张

概述介绍《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"}

嵌入式关系

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

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

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

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

引用式关系

引用式关系是设计数据库时经常用到的办法,这种办法把用户数据文档和用户地址数据文档分开,通过引用文档的 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 关系全部内容,希望文章能够帮你解决MongoDB 关系所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1154318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存