我正在查找關於連接的一些信息以及它們在MongoDB
內的行爲。雖然我認識到NoSQL數據庫背後的大量力量是將所有信息存儲在文檔中,並且該文檔包含儘可能多的信息以便您不必執行多個查詢MongoDB:將集合加入到單個文檔中
但是我也請注意,有些情況下您可能希望儘量減少數據重複,以便將一致性問題的風險降至最低。
當使用文檔引用時,有什麼辦法可以返回單個文檔嗎?我嘗試過$lookup
函數,雖然它返回了正確的結果,但它爲每個數組條目返回一個文檔。
假設以下結構:
客戶:
{
_id: ObjectId("578d706916f07969c4b0cad1"),
name: "fred",
orders: [ObjectId("578d706916f07969c4b0cad2"),ObjectId("578d706916f07969c4b0cad3")]
}
訂單:
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [a,b,c,d]
},
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [x,y,z]
}
使用查找,我可以得到2個文件,一個是與客戶的每個訂單的結果數據附加,但是我正在尋找一個數組或訂單信息的單個文檔 - embedded document
。即以下結構
{
_id: ObjectId("578d706916f07969c4b0cad1"),
name: "fred",
orders: [
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [a,b,c,d]
},
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [x,y,z]
}]
}
這是可能的在MongoDB
?或者是join
流程與SQL數據庫緊密匹配,您將在嘗試連接數據時始終返回重複的客戶信息?我知道數據可以在應用程序中變成單個文檔,例如node
然而,從查詢寫入的方式來說,它可能會將其預格式化?