日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
MongoDB關(guān)系:文檔之間的關(guān)聯(lián)
MongoDB 中的關(guān)系表示多個(gè)文檔之間在邏輯上的相互聯(lián)系,文檔之間可以通過(guò)嵌入或引用來(lái)建立聯(lián)系,這種聯(lián)系可以是 1:1(1對(duì)1)、1:N(1對(duì)多)、N:1(多對(duì)1)、N:N(多對(duì)多)。例如我們要存儲(chǔ)用戶的收貨地址,一個(gè)用戶可以擁有多個(gè)收貨地址,從而形成 1:N 的關(guān)系。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)肇東,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792

下面展示了一個(gè)記錄用戶信息的文檔的結(jié)構(gòu):

{
    "_id":ObjectId("52ffc33cd85242f436000001"),
    "name": "bianchengbang",
    "phone": "15011226666",
    "birth": "01-01-1991"
}

以下是記錄用戶地址的文檔結(jié)構(gòu):

{
    "_id":ObjectId("52ffc4a5d85242602e000000"),
    "place": "22 A, Indiana Apt",
    "postcode": 123456,
    "city": "Los Angeles",
    "country": "California"
}

嵌入式關(guān)系

在嵌入式關(guān)系中,我們可以將記錄用戶地址的文檔嵌入到用戶文檔中,如下所示:

{
        "_id" : ObjectId("603c8471f2c28d0fdf74ae78"),
        "phone" : "15011226666",
        "pincode" : "01-01-1991",
        "name" : "bianchengbang",
        "address" : [
                {
                        "place" : "22 A, Indiana Apt",
                        "postcode" : 123456,
                        "city" : "Los Angeles",
                        "country" : "California"
                },
                {
                        "place" : "170 A, Acropolis Apt",
                        "postcode" : 456789,
                        "city" : "Chicago",
                        "country" : "Illinois"
                }
        ]
}

這種將所有相關(guān)數(shù)據(jù)都保存在一個(gè)文檔中的方式,可以使得文檔的檢索和維護(hù)變的更加容易,當(dāng)我們要查詢用戶地址時(shí),可以像下面這樣:

> db.users.findOne({"name":"bianchengbang"},{"address":1})
{
        "_id" : ObjectId("603c8471f2c28d0fdf74ae78"),
        "address" : [
                {
                        "place" : "22 A, Indiana Apt",
                        "postcode" : 123456,
                        "city" : "Los Angeles",
                        "country" : "California"
                },
                {
                        "place" : "170 A, Acropolis Apt",
                        "postcode" : 456789,
                        "city" : "Chicago",
                        "country" : "Illinois"
                }
        ]
}

雖然這樣的結(jié)構(gòu)在讀取數(shù)據(jù)時(shí)很方便,但這種數(shù)據(jù)結(jié)構(gòu)也是有缺點(diǎn)的,當(dāng)用戶和用戶地址不斷增加,數(shù)據(jù)量不斷變大時(shí),會(huì)大大影響數(shù)據(jù)庫(kù)的讀寫性能。

引用式關(guān)系

引用式關(guān)系是設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)經(jīng)常用到的方法,在這種方法中,用戶文檔和用戶地址文檔是分開(kāi)的,通過(guò)引用文檔的 id 字段來(lái)建立它們之間的關(guān)系。如下所示:

{
        "_id" : ObjectId("603c8471f2c28d0fdf74ae78"),
        "phone" : "15011226666",
        "pincode" : "01-01-1991",
        "name" : "bianchengbang",
        "address_ids" : [
                ObjectId("603c8471f2c28d0fdf74ae79"),
                ObjectId("603c8471f2c28d0fdf74ae80")
        ]
}

如上所示,在用戶文檔中包含一個(gè) address_ids 字段,其中包含用戶地址文檔中相應(yīng)的 ObjectId。使用這些 ObjectId,我們可以從用戶地址文檔中獲取地址的詳細(xì)信息。使用這種方法,我們將需要兩次查詢,第一次從用戶文檔中獲取 address_ids 字段,第二次從地址集合中獲取地址的詳細(xì)信息。

> var ids = db.users.findOne({"name":"bianchengbang"},{"address_ids":1})
> var addresses = db.address.find({"_id":{"$in":ids["address_ids"]}}).pretty()
> addresses
{
        "_id" : ObjectId("603c9355f2c28d0fdf74ae79"),
        "place" : "22 A, Indiana Apt",
        "postcode" : 123456,
        "city" : "Los Angeles",
        "country" : "California"
}
{
        "_id" : ObjectId("603c937bf2c28d0fdf74ae7a"),
        "place" : "170 A, Acropolis Apt",
        "postcode" : 456789,
        "city" : "Chicago",
        "country" : "Illinois"
}

本文名稱:MongoDB關(guān)系:文檔之間的關(guān)聯(lián)
瀏覽地址:http://www.5511xx.com/article/dpojjid.html