在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ MongoDB數(shù)據(jù)庫引用
MongoDB教程
MongoDB覆蓋查詢
MongoDB數(shù)據(jù)建模
MongoDB聚合
MongoDB更改用戶密碼和自定義數(shù)據(jù)
MongoDB用戶
MongoDB分片
MongoDB創(chuàng)建集合
MongoDB文本搜索
MongoDB數(shù)據(jù)類型
MongoDB GridFS
MongoDB索引限制
MongoDB插入文檔
MongoDB刪除集合
MongoDB數(shù)據(jù)庫引用
MongoDB復(fù)制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復(fù)
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認(rèn)證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級索引
MongoDB數(shù)據(jù)庫的優(yōu)點
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達(dá)式
MongoDB查詢文檔
MongoDB關(guān)聯(lián)關(guān)系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB數(shù)據(jù)庫引用

如MongoDB關(guān)系的最后一章所示,要在MongoDB中實現(xiàn)規(guī)范化的數(shù)據(jù)庫結(jié)構(gòu),我們使用引用關(guān)系的概念,也稱為手動引用,將引用的文檔的id手動存儲在其他文檔中。 但是,如果文檔包含來自不同集合的引用,可以使用MongoDB DBRefs。

DBRefs vs 手動參考

考慮一個示例場景,在這個場景中將使用DBRefs而不是手動引用,設(shè)計有一個數(shù)據(jù)庫中將不同類型的地址(家庭,辦公室,郵件等)存儲在不同的集合(address_homeaddress_office,address_mailing等)中。 現(xiàn)在,當(dāng)用戶集合的文檔引用地址時,還需要根據(jù)地址類型指定要查找的集合。 在這種情況下,文檔引用了多個集合中的文檔,則應(yīng)該使用DBRefs。

使用DBRefs

DBRefs中有三個字段 -

  • $ref - 此字段指定引用文檔的集合
  • $id - 此字段指定引用文檔的_id字段
  • $db - 這是一個可選字段,并包含引用文檔所在的數(shù)據(jù)庫的名稱

假設(shè)一個具有DBRef字段address的示例用戶文檔,如代碼片段所示 -

{
   "_id":ObjectId("348362491fjaskdlf2314"),
   "address": {
   "$ref": "address_home",
   "$id": ObjectId("sfaafdf4137832149fssa"),
   "$db": "yiibai"},
   "contact": "13800138000",
   "dob": "1991-12-12",
   "name": "Maxsu"
}

這里的 DBRef 字段 address指定引用的地址文件位于yiibai數(shù)據(jù)庫中的address_home集合中,其ID為sfaafdf4137832149fssa。

以下代碼由$ref參數(shù)(在示例中為address_home)指定的集合中動態(tài)地查找ID為DBRef中的$id參數(shù)指定的文檔。

>var user = db.users.findOne({"name":"Maxsu"})
>var dbRef = user.address
>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})

以上代碼返回address_home集合中存在的以下address文檔中 -

{
   "_id" : ObjectId("sfaafdf4137832149fssa"),
   "building" : "Hainan Apt No.2100",
   "pincode" : 571100,
   "city" : "Haikou",
   "province" : "Hainan"
}