国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

MongoDB關系怎么理解?

2024-09-07 00:22:28
字體:
來源:轉載
供稿:網友
       文本給大家介紹是關于MongoDB關系,很多新手剛接觸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"),
  "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 字段包含用戶地址的對象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"]}})



(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖西县| 青岛市| 澄江县| 金湖县| 靖西县| 泾川县| 永顺县| 集安市| 周至县| 新龙县| 观塘区| 固阳县| 晴隆县| 韩城市| 桑日县| 永清县| 莫力| 南澳县| 柳河县| 广州市| 怀来县| 贺州市| 平安县| 澄迈县| 北票市| 棋牌| 林州市| 子洲县| 汤原县| 全椒县| 周口市| 巧家县| 祁东县| 钦州市| 祁东县| 聂拉木县| 平罗县| 山西省| 孝昌县| 武功县| 六盘水市|