最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談MongoDB 關(guān)系

 更新時間:2020年07月03日 14:49:27   作者:菜鳥教程  
這篇文章主要介紹了MongoDB 關(guān)系的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下

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

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

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

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

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

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

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

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

以下是 address 文檔的簡單結(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ù)保存在單一的文檔中,可以比較容易的獲取和維護數(shù)據(jù)。 你可以這樣查詢用戶的地址:

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

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

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

引用式關(guān)系

引用式關(guān)系是設(shè)計數(shù)據(jù)庫時經(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")
  ]
}

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

我們可以讀取這些用戶地址的對象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"]}})

以上就是淺談MongoDB 關(guān)系的詳細內(nèi)容,更多關(guān)于MongoDB 關(guān)系的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Win10 安裝 MongoDB 3.6.5 失敗的問題及解決方法

    Win10 安裝 MongoDB 3.6.5 失敗的問題及解決方法

    這篇文章主要介紹了Win10 安裝 MongoDB 3.6.5 失敗的問題及解決方法,需要的朋友可以參考下
    2018-05-05
  • 關(guān)于mongodb初始化以及配置方式

    關(guān)于mongodb初始化以及配置方式

    這篇文章主要介紹了關(guān)于mongodb初始化以及配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MongoDB系列教程(二):MongoDB簡介

    MongoDB系列教程(二):MongoDB簡介

    這篇文章主要介紹了MongoDB系列教程(二):MongoDB簡介,本文講解了MongoDB介紹、MongoDB功能特性、mongoDB數(shù)據(jù)架構(gòu)等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • MongoDB安裝、基礎(chǔ)操作和聚合實例介紹

    MongoDB安裝、基礎(chǔ)操作和聚合實例介紹

    雖然MongoDB這些年很流行,但筆者之前沒研究過,現(xiàn)在有需求研究這類NoSQL的數(shù)據(jù)庫,是為了驗證其是否可被替換,本文給大家介紹MongoDB安裝、基礎(chǔ)操作和聚合實例詳解,感興趣的朋友一起看看吧
    2024-07-07
  • MongoDB插入數(shù)據(jù)的3種方法

    MongoDB插入數(shù)據(jù)的3種方法

    在MongoDB中,db.collection.insert()方法添加一個新文檔到集合中。另外,db.collection.update()方法和db.collection.save()方法也能通過upsert操作添加新文檔。upsert操作執(zhí)行更新現(xiàn)有文檔或者當文檔不存在時插入一個新文檔。
    2014-05-05
  • MongoDB模糊查詢正則regex(類似like?和?not?like)

    MongoDB模糊查詢正則regex(類似like?和?not?like)

    在類關(guān)系型數(shù)據(jù)庫中,like和not?like是常用的模糊查詢操作符,它允許我們在匹配字段的時候使用通配符,在MongoDB中,也有類似的操作符,MongoDB?可以使用?$regex?操作符來設(shè)置匹配字符串的正則表達式,MongoDB?使用?PCRE(Perl?兼容的正則表達式)作為正則表達式語言
    2024-02-02
  • 28個MongoDB經(jīng)典面試題詳解

    28個MongoDB經(jīng)典面試題詳解

    這篇文章主要介紹了28個MongoDB經(jīng)典面試題詳解,需要的朋友可以參考下
    2020-02-02
  • Mongo DB增刪改查命令

    Mongo DB增刪改查命令

    本文給大家匯總介紹了一下Mongo DB數(shù)據(jù)庫的增刪改查命令以及部分的示例,有需要的小伙伴可以參考下,希望對大家學習Mongo DB能夠有所幫助
    2016-12-12
  • MongoDB如何查看版本信息詳解

    MongoDB如何查看版本信息詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB如何查看版本信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • C#實現(xiàn)窗體中的各個控件同比自動放縮大小

    C#實現(xiàn)窗體中的各個控件同比自動放縮大小

    這篇文章主要介紹了C#實現(xiàn)窗體中的各個控件同比自動放縮大小,實現(xiàn)方式主要是利用panel控件為主題,對于每個控件的大小位置和字體這幾個屬性進行記錄,然后根據(jù)窗體改變的大小同時放縮,需要的朋友可以參考下
    2014-10-10

最新評論

怀远县| 土默特右旗| 滁州市| 柏乡县| 故城县| 平昌县| 桦川县| 米泉市| 天峨县| 塘沽区| 普定县| 武定县| 博乐市| 衡南县| 江山市| 双鸭山市| 黑龙江省| 锡林浩特市| 慈溪市| 巴林左旗| 大庆市| 西充县| 莱芜市| 芮城县| 合川市| 黎城县| 枣阳市| 惠州市| 兴和县| 左权县| 云林县| 郯城县| 敦化市| 万源市| 海盐县| 东港市| 印江| 紫金县| 定南县| 江北区| 临猗县|