av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

MongoDB關系:文檔之間的關聯(lián)

MongoDB 中的關系表示多個文檔之間在邏輯上的相互聯(lián)系,文檔之間可以通過嵌入或引用來建立聯(lián)系,這種聯(lián)系可以是 1:1(1對1)、1:N(1對多)、N:1(多對1)、N:N(多對多)。例如我們要存儲用戶的收貨地址,一個用戶可以擁有多個收貨地址,從而形成 1:N 的關系。

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

下面展示了一個記錄用戶信息的文檔的結構:

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

以下是記錄用戶地址的文檔結構:

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

嵌入式關系

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

{
        "_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"
                }
        ]
}

這種將所有相關數據都保存在一個文檔中的方式,可以使得文檔的檢索和維護變的更加容易,當我們要查詢用戶地址時,可以像下面這樣:

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

雖然這樣的結構在讀取數據時很方便,但這種數據結構也是有缺點的,當用戶和用戶地址不斷增加,數據量不斷變大時,會大大影響數據庫的讀寫性能。

引用式關系

引用式關系是設計數據庫時經常用到的方法,在這種方法中,用戶文檔和用戶地址文檔是分開的,通過引用文檔的 id 字段來建立它們之間的關系。如下所示:

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

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

> 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關系:文檔之間的關聯(lián)
網站路徑:http://uogjgqi.cn/article/dpojjid.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流