Rekursiv verschachtelte Dokument - Mongoose / MongoDB
Frage
Ich habe ein rekursiv verschachteltes Schema, genau wie Kommentare in einem Blog. Was ist der beste Weg, um ein individuell verschachteltes Dokument herauszuholen, das mehrere Schichten tief sein kann.
Ich verstehe, dass Sie das Root -Dokument herausholen, und dann in das gewünschte Dokument einbleiben, aber in einer rekursiven Situation, in der das gewünschte Dokument möglicherweise eine unbekannte Anzahl von Ebenen sein kann, wie soll ich es zurückziehen. Schleifen Sie durch und tun Sie ein, wenn Sie sehen, ob es das richtige ist ...?
Lösung
Sieht so aus, als ob es keine mongoose Möglichkeit gibt, es zu tun, damit ich eine rekursive Fundfunktion wie diese zum Finden eines Ordners verwende, der verschachtelt ist:
var findFolder = function(searchFolder ,folder_id, cb){
var folder = searchFolder.folders.id(folder_id);
if(folder == undefined){
_.each(searchFolder.folders, function(subFolder){
findFolder(subFolder, folder_id, cb);
}.bind(this))
}else{
cb(folder);//when found callback passing the doc
};
};
PS Dies verwendet die Unterstrichbibliothek
Andere Tipps
Schnelle Antwort lautet: Sie können Sub -Dokument nicht laden, da MongoDB es nicht unterstützt. In MongoDB können Sie nur Root -Dokument laden und dann auf der Clientseite (aus einer beliebigen Ebene von Tiefen) aus dem Subdokument extrahieren.