我對MongoDB和NoSQL運動非常陌生,對我一無所知。到目前爲止,我已經遇到了三種不同方式的「加盟」集合:MongoDB - DBRefs vs Map/Reduce vs手冊參考
- 手動保持「外鍵,ESK」參考你想與你的目標集合加入
- 使用DBRefs 集合
- 寫了一系列的Map/Reduce功能來維護關係
有人能解釋的好處時,我應該每一個?
我的第一印象是Map/Reduce適用於大型常用集合,另外兩個主要用於小型/快速查詢。
我對MongoDB和NoSQL運動非常陌生,對我一無所知。到目前爲止,我已經遇到了三種不同方式的「加盟」集合:MongoDB - DBRefs vs Map/Reduce vs手冊參考
有人能解釋的好處時,我應該每一個?
我的第一印象是Map/Reduce適用於大型常用集合,另外兩個主要用於小型/快速查詢。
很抱歉的響應晚 - 在這裏是一個用貓鼬嵌入文檔的一個簡單的例子:
var postSchema = new Schema({
author : {type : String},
title : {type : String, require : true},
content : {type : String, require : true},
comment : {
owner : {type : String},
subject : {type: String, require},
content : {type String, require}
}
});
這裏的文件是postSchema(以及它的模式,但我想你明白我的意思) 。
評論是嵌入式文件,你可以看到它是一個內部定義的對象。
好處是,您每次打電話發佈信息時都會收到評論,而無需額外查詢,但是如果您有很多評論,它會使發佈文檔變得非常大!
謝謝。我最終得到了第二個註釋模式,以便我可以通過所有者或Post(引用您的示例中的命名結構)來引用它們。它似乎最適合我的特殊用例,但我可以看到,在MongoDB和基於文檔的數據庫中,您必須以不同的方式思考您的想法。 – Adam
我同意,從RDBMS切換到基於文檔的數據庫需要一些時間。 –
我會說你永遠不應該通過一個MR來保持連接,而DBRef只是第一個的另一個版本,除了DBRef還有一個集合名稱 – Sammaye
有意義。你知道一種方法來優化引用,所以你不需要從客戶端做額外的查詢來獲取引用的記錄嗎?在返回數據集之前,是否有辦法在服務器上執行此操作? – Adam
不,mongodb沒有解析服務器端引用 – Sammaye