mongo中用巢狀結構優勢是什麼
阿新 • • 發佈:2018-12-28
首先需要知道,MongoDB是NoSQL中的一種,是不直接支援Join的,這是NoSQL的一個特點,不需要直接支援Join,可以將橫向擴充套件以及效能做到更好。
但是這不等於說MongoDB不能做Join所做的事情,為了達到傳統資料庫join的功能,MongoDB中有2個思路:
-
Embedding:透過Embedding子文件,達到One to Many的關聯關係;這就是您說的巢狀結構;
-
Referencing:Referencing分為手工Referencing和自動Referencing;通常推薦是手工Referencing,通常是將需要關聯的文件的Object_id儲存在需要關聯的Collection中,也就是說需要關聯的Document的Object_id寫入時,分別寫入在兩個需要關聯的Collection裡面。
上述兩個思路,也正是MongoDB的Data Model的主要思路。
那麼上述2個思路在具體的運用的時候,怎麼區分開呢?
-
如果能夠Embedding的Sub Document,不需要單獨被查詢,那就直接Embedding;
-
如果這個Sub Document需要對外提供查詢,則單獨儲存為一個Collection,並使用Referencing與其他collecion關聯。
供參考。
Love MongoDB! Have Fun!
引:https://segmentfault.com/q/1010000009109840