MongoDB 文件物件間的關係

2021-10-06 03:39:03 字數 1255 閱讀 5529

mongodb雖然是非關係型資料庫,但並不意味著mongodb中的文件物件之間無法建立關係(當然這些物件之間也可以沒有關係),建立關係的思想和關係型資料庫大體一樣,但也有不同的地方。

在mongodb中可以通過內嵌文件的形式體現出一對一的關係,比如夫妻:

}

乙個文件物件一旦被嵌入到另乙個文件物件中就絕不可能再被嵌入到其他文件物件中,因此可以體現出一對一的關係

有兩種方式可以體現一對多(或多對一)的關係,以客戶和訂單為例:

一:關係在一的一方維護,直接通過內嵌陣列,在陣列中放整個物件的方式:這種方式不好,因為如果對應的物件比較多的話,文件就會看起來很複雜,不易查詢

,

]}

二:一對多,使用者:constom/訂單orders

1⃣️:先建立使用者集合

db.constom.insert([	,	

])

2⃣️:再建立訂單集合(新增乙個userid屬性,該訂單是誰的就給userid屬性新增誰的_id)

db.orders.insert()
3⃣️:通過userid再去查詢每個人對應的訂單

var userid = db.constom.findone()._id;

db.orders.find()

老師–學生

首先插入乙個老師的集合

db.teachers.insert([,,

])

查詢插入的結果:

db.teachers.find()
結果如下:

/* 1 */

/* 2 */

/* 3 */

再插入乙個學生的集合

db.students.insert([

,])

查詢一下學生的集合

db.students.find()
結果:

/* 1 */

/* 2 */

得出結論:語文老師和數學老師都教過lily和cindy,cindy有兩個老師lily有三個老師,這就是乙個典型的多對多關係

物件間的組成關係

要求 首先設計乙個人員類person 作為基類,其資料成員為姓名和身份證號,成員函式有輸入資料和顯示資料,再設計乙個學生位址類address 包括資料成員位址和年齡,成員函式有輸入資料和顯示資料 生成person 的派生類學生student student 包括資料成員 號碼和c 成績,成員函式有輸...

C 物件間關係

內容 類的符合,繼承,委託 include using namespace std class father father const father father operator const father virtual void show string name int age class so...

11 文件間的關係

在mongodb中,可以通過內嵌文件的形式來體現一對一的關係。比如 夫妻關係,如下 use my test db.wifeandhusband.insertmany 在mongodb中,也可以通過內嵌文件的形式來對映一對多的關係。比如,使用者和訂單。插入使用者資料 先執行 db.users.inse...