明瞭 | MongoDB 外鍵的基本使用

小小繼續進行學習,此次學習的內容是MongoDB外鍵的基本使用。java

表示表關係的方法

在傳統的關係型數據庫當中,表示表關係,數據是經過索引來完善。
而在MongoDB中,表示表關係,使用的是嵌套,即,一個文檔嵌套一個文檔的方法,做爲MongoDB的兩個文檔的關聯,以及使用,reference link做爲文檔和文檔之間的關聯。mongodb

文檔嵌套

使用可視化的

這裏使用可視化的編輯器做爲文檔嵌套
輸入如下的文檔對象數據庫

{
    "ming": "ming",
        "ming2": {
            "ming3": "ming8"
        }
}

插入成功之後以下
app

這樣就完成了文檔的嵌套,即,表示兩個文檔之間的關聯。koa

使用JDK

這裏使用JDK進行鏈接。
首先添加依賴編輯器

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.5.0</version>
</dependency>

進行鏈接

try{   
       // 鏈接到 mongodb 服務
         MongoClient mongoClient = new MongoClient( "106.53.115.12" , 27017 );
       
         // 鏈接到數據庫
         MongoDatabase mongoDatabase = mongoClient.getDatabase("koa");  
       System.out.println("Connect to database successfully");
        
      }catch(Exception e){
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
     }

進行插入

List<Document> collections = new ArrayList<Document>();
Document d1 = new Document();
d1.append("name", "三國演義").append("author", "羅貫中");
Document d2 = new Document();
d2.append("name", "紅樓夢").append("author", d1);
collections.add(d2);
c.insertMany(collections);

查詢出來的數據以下學習

{
    "name" : "紅樓夢",
    "author": {
        "name": "三國演義",
        "author": "羅貫中"
    }
}

此時就完成了文檔的嵌套操做spa

外鍵查詢

使用js語言,進行查詢關聯

這裏使用new DBRef的方式作外鍵查詢。
此時對於DBRef具備如下字段。3d

$ref

         該$ref字段包含引用文檔所在的集合的名稱。

$id

        該$id字段包含_id引用文檔中字段的值。

$db

      可選的。包含引用文檔所在的數據庫的名稱。只有一些驅動程序支持$db引用,該字段說明能夠跨集合關聯

這裏對集合操做關聯以下code

// 保存集合的數據
> var a={value:"1"}  
 
> var b={value:"2"}  
 
> var c={value:"9"}  
 
> var d={value:"10"}  
 
> db.A.save(a)  
 
> db.A.save(b)        
 
> db.A.save(c)   
 
> db.A.save(d)  
 // 進行集合數據的查詢
> db.A.find()                                                                                                 
 
{ "_id" : ObjectId("4e3f33ab6266b5845052c02b"), "value" : "1" }  
 
{ "_id" : ObjectId("4e3f33de6266b5845052c02c"), "value" : "2" }  
 
{ "_id" : ObjectId("4e3f33e06266b5845052c02d"), "value" : "9" }  
 
{ "_id" : ObjectId("4e3f33e26266b5845052c02e"), "value" : "10" }  

進行集合關聯,這裏使用 new DBRef 方式完成集合的關聯

// 經過添加new DBRef 關鍵字,完成對集合的關聯,這裏經過new DBRef做爲關鍵字,其中A爲key,ObjectId 爲value,進行關聯
> var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:3}                        
 
 // 保存集合
> db.B.save(Ba)  
 
> var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:4}  
 
> db.B.insert(Ba)                                                              
 
> var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:7}  
 
> db.B.insert(Ba)                                                              
 
> var Ba={Apid:[new DBRef('A',ObjectId("4e3f33de6266b5845052c02c"))],value:8}  
 
> db.B.insert(Ba)                                                              
 // 進行查詢
> db.B.find()  
 
 // 能夠看到,已經成功關聯
{ "_id" : ObjectId("4e3f3dd96266b5845052c035"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 3 }  
 
{ "_id" : ObjectId("4e3f3de16266b5845052c036"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 4 }  
 
{ "_id" : ObjectId("4e3f3dec6266b5845052c037"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 7 }  
 
{ "_id" : ObjectId("4e3f3df06266b5845052c038"), "Apid" : [ { "$ref" : "A", "$id" : ObjectId("4e3f33de6266b5845052c02c") } ], "value" : 8 } 

使用mongo-java的方式操做

// 建立外鍵進行關聯,其中外鍵爲refB
            // 其中選擇對db數據庫進行操做,選擇id做爲數據庫的關聯
            DBRef refB = new DBRef(db,"transations", obj.get("_id"));
            // 建立新的集合
            DBObject subObj = new BasicDBObject();
            // 外鍵插入
            subObj.put("brand", refB);
            // 進行保存
            accounts.save(subObj);

查詢的結果以下

能夠看到其中$id 對應的值爲其數據庫mongodb的外鍵。
這樣就完成了對數據庫的外鍵操做。

公衆號

相關文章
相關標籤/搜索