MongoDB 關(guān)系

      網(wǎng)友投稿 600 2025-04-02

      MongoDB 的關(guān)系表示多個(gè)文檔之間在邏輯上的相互聯(lián)系。


      文檔間可以通過嵌入和引用來建立聯(lián)系。

      MongoDB 中的關(guān)系可以是:

      1:1 (1對(duì)1)

      1: N (1對(duì)多)

      N: 1 (多對(duì)1)

      MongoDB 關(guān)系

      N: N (多對(duì)多)

      接下來我們來考慮下用戶與用戶地址的關(guān)系。

      一個(gè)用戶可以有多個(gè)地址,所以是一對(duì)多的關(guān)系。

      以下是?user?文檔的簡(jiǎn)單結(jié)構(gòu):

      { "_id":ObjectId("52ffc33cd85242f436000001"), "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" }

      以下是?address?文檔的簡(jiǎn)單結(jié)構(gòu):

      { "_id":ObjectId("52ffc4a5d85242602e000000"), "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }

      嵌入式關(guān)系

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

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

      以上數(shù)據(jù)保存在單一的文檔中,可以比較容易的獲取和維護(hù)數(shù)據(jù)。 你可以這樣查詢用戶的地址:

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

      注意:以上查詢中?db?和?users?表示數(shù)據(jù)庫(kù)和集合。

      這種數(shù)據(jù)結(jié)構(gòu)的缺點(diǎn)是,如果用戶和用戶地址在不斷增加,數(shù)據(jù)量不斷變大,會(huì)影響讀寫性能。

      引用式關(guān)系

      引用式關(guān)系是設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)經(jīng)常用到的方法,這種方法把用戶數(shù)據(jù)文檔和用戶地址數(shù)據(jù)文檔分開,通過引用文檔的?id?字段來建立關(guān)系。

      { "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000"), ObjectId("52ffc4a5d85242602e000001") ] }

      以上實(shí)例中,用戶文檔的?address_ids?字段包含用戶地址的對(duì)象id(ObjectId)數(shù)組。

      我們可以讀取這些用戶地址的對(duì)象id(ObjectId)來獲取用戶的詳細(xì)地址信息。

      這種方法需要兩次查詢,第一次查詢用戶地址的對(duì)象id(ObjectId),第二次通過查詢的id獲取用戶的詳細(xì)地址信息。

      >var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1}) >var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})

      MongoDB

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:word文檔怎么自動(dòng)編號(hào)
      下一篇:Excel分列功能
      相關(guān)文章
      亚洲日韩乱码中文无码蜜桃臀| 亚洲综合图片小说区热久久| 亚洲人成在线免费观看| 亚洲AV成人精品网站在线播放| 亚洲精品无码永久中文字幕| 国产亚洲美女精品久久久| 亚洲一级片免费看| 亚洲真人日本在线| 亚洲偷自拍拍综合网| 亚洲无码视频在线| 中文字幕亚洲一区二区va在线| 在线观看亚洲成人| 亚洲伊人久久精品影院| 亚洲色中文字幕无码AV| 国产成人综合亚洲AV第一页| 在线A亚洲老鸭窝天堂| 国产亚洲3p无码一区二区| 亚洲AV无一区二区三区久久| 日本亚洲视频在线| 亚洲国产高清在线| 亚洲视频手机在线| 亚洲丰满熟女一区二区v| 亚洲国产日韩视频观看| 亚洲乱码无人区卡1卡2卡3| 苍井空亚洲精品AA片在线播放| 亚洲偷自拍另类图片二区| 亚洲AV性色在线观看| 国产av无码专区亚洲av毛片搜| 亚洲国产精品一区二区九九| 爱情岛论坛网亚洲品质自拍| 伊人亚洲综合青草青草久热| 亚洲国产精品无码专区在线观看| 亚洲AV无码国产丝袜在线观看 | 色婷婷亚洲十月十月色天| 亚洲最大黄色网址| 亚洲日韩一区精品射精| 毛片亚洲AV无码精品国产午夜| 亚洲伊人成无码综合网| 亚洲av成人无码久久精品| 亚洲国产日韩在线一区| 亚洲国产成人久久精品大牛影视|