MongoDB關係與資料庫引用

來源:互聯網
上載者:User

標籤:

MongoDB關係:

    MongoDB 的關係表示多個文檔之間在邏輯上的相互聯絡。文檔間可以通過嵌入和引用來建立聯絡。

1. 內嵌關係:

  形式:把一個文檔嵌入到另一個文檔中。

  優點:資料儲存在單一的文檔中,可以比較容易的擷取和維護資料。(只需一次查詢)

  缺點:如果資料量不斷變大,會影響讀寫效能。

  使用樣本:

{  

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

   "name": "Tom Benzamin",

   "address": [

      {

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

         "pincode": 123456,

      },

      {

         "building": "170 A, Acropolis Apt",

         "pincode": 456789,

      }]

  查詢樣本:

  db.users.findOne({"name":"Tom Benzamin"},{"address":1})

 

2. 參考關聯性:

  形式:通過文檔的id欄位來建立關係。

  缺點:查詢時需要兩次查詢。

  使用樣本:

{

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

   "name": "Tom Benzamin",

   "address_ids": [

      ObjectId("52ffc4a5d85242602e000000"),

      ObjectId("52ffc4a5d85242602e000001")

   ]

}

  查詢樣本:

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

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

 

資料庫引用:當一個文檔需要從多個集合引用文檔時,應該使用DBRefs。

DBRefs的形式:

{ $ref : , $id : , $db :  }

三個欄位表示的意義為:

$ref:集合名稱

$id:引用的id

$db:資料庫名稱,選擇性參數

使用樣本:

{

   "_id":ObjectId("53402597d852426020000002"),

   "address": {

   "$ref": "address_home",

   "$id": ObjectId("534009e4d852427820000002"),

   "$db": "w3cschoolcc"},

   "contact": "987654321",

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

   "name": "Tom Benzamin"

}

查詢樣本:

>var user = db.users.findOne({"name":"Tom Benzamin"})

>var dbRef = user.address

>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})

 

MongoDB關係與資料庫引用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.