MongoDB 8關係

來源:互聯網
上載者:User

標籤:邏輯   done   讀寫   計數   users   結構   之間   關係   嵌入   

MongoDB 關係

MongoDB 的關係表示多個文檔之間在邏輯上的相互聯絡。

文檔間可以通過嵌入和引用來建立聯絡。

MongoDB 中的關係可以是:

  • 1:1 (1對1)
  • 1: N (1對多)
  • N: 1 (多對1)
  • N: N (多對多)

一個使用者可以有多個地址,所以是一對多的關係。

以下是 user 文檔的簡單結構

嵌入式關係

使用嵌入式方法,我們可以把使用者地址嵌入到使用者的文檔中:

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

   "contact": "987654321",

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

   "name": "Tom Benzamin",

   "address": [

      {

         "building": "22 A, Indiana Apt",

         "pincode": 123456,

         "city": "Los Angeles",

         "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"),

   "contact": "987654321",

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

   "name": "Tom Benzamin",

   "address_ids": [

      ObjectId("52ffc4a5d85242602e000000"),

      ObjectId("52ffc4a5d85242602e000001")

   ]

}

以上執行個體中,使用者文檔的 address_ids 欄位包含使用者地址的對象idObjectId)數組。

我們可以讀取這些使用者地址的對象idObjectId)來擷取使用者的詳細地址資訊。

這種方法需要兩次查詢,第一次查詢使用者地址的對象idObjectId),第二次通過查詢的id擷取使用者的詳細地址資訊。

>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})

>var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})

MongoDB 8關係

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.