Ottenere documento in modo ricorsivo nidificato - Mongoose / MongoDB
Domanda
Ho uno schema ricorsivo nidificato proprio come commenti lavorare su un blog. Qual è il modo migliore per tirare fuori un documento nidificato che possono essere diversi strati profondi.
Capisco che si ottiene il documento radice, poi drill-down per il documento che si desidera, ma in una situazione in cui ricorsivo il documento desiderato può essere un numero imprecisato di livelli di profondità come dovrei retrive esso. Loop attraverso e fare un caso per vedere se quella giusta ...?
Soluzione
Sembra che ci sia alcun modo mangusta per farlo in modo im utilizzando una funzione di ricerca ricorsiva come questo per la ricerca di una cartella che è annidato:
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
};
};
P.S. questo utilizza la libreria di sottolineatura
Altri suggerimenti
risposta rapida è: non è possibile caricare documenti sub, perché MongoDB non lo supporta. In MongoDB è possibile caricare solo documento radice e quindi estrarre da esso sub documento al lato client (da qualsiasi livello di profondità).