Получение рекурсивно вложенного документа - Mongoose / Mongodb
Вопрос
У меня есть рекурсивно вложенная схема, как комментарии, работающие в блоге. Как лучше всего вытащить индивидуально вложенный документ, который может быть несколько слоев глубиной.
Я понимаю, что вы получаете корневой документ, а затем сверните до того, что вам нужно, но в рекурсивной ситуации, когда разыскиваемый документ может быть неизвестным количеством уровней глубоко, как мне его повторно обратить. Проверьте и сделайте, чтобы увидеть, правильный ли он ...?
Решение
Похоже, нет никакого мангуозного способа сделать это, поэтому я использую рекурсивную функцию поиска, подобную этой, для поиска вложенной папки:
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 Это использует нижнюю библиотеку
Другие советы
Быстрый ответ: вы не можете загрузить Sub Document, потому что MongoDB не поддерживает его. В MongoDB вы можете загрузить только корневой документ, а затем извлечь из него подкабильный документ на стороне клиента (с любого уровня глубокого).