Obtener documento anidado recursivamente - Mongoose / MongoDB
Pregunta
Tengo un esquema recursivamente anidado como los comentarios funcionan en un blog. ¿Cuál es la mejor manera de sacar un documento anidado individualmente que puede tener varias capas de profundidad?
Entiendo que obtienes el documento raíz, luego profundiza en el documento que deseas, pero en una situación recursiva en la que el documento buscado puede ser un número desconocido de niveles de profundidad, ¿cómo debo recuperarlo? Haga vueltas y haga un si es para ver si es el correcto ...?
Solución
Parece que no hay una forma de mangosta de hacerlo, así que estoy usando una función de búsqueda recursiva como esta para encontrar una carpeta que esté anidada:
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
};
};
PD esto usa la biblioteca de subrayamiento
Otros consejos
La respuesta rápida es: no puede cargar un subgrupo, porque MongoDB no lo admite. En MongoDB puede cargar solo el documento raíz y luego extraer del sub documento en el lado del cliente (desde cualquier nivel de profundidad).