Получение рекурсивно вложенного документа - Mongoose / Mongodb

StackOverflow https://stackoverflow.com/questions/7300757

Вопрос

У меня есть рекурсивно вложенная схема, как комментарии, работающие в блоге. Как лучше всего вытащить индивидуально вложенный документ, который может быть несколько слоев глубиной.

Я понимаю, что вы получаете корневой документ, а затем сверните до того, что вам нужно, но в рекурсивной ситуации, когда разыскиваемый документ может быть неизвестным количеством уровней глубоко, как мне его повторно обратить. Проверьте и сделайте, чтобы увидеть, правильный ли он ...?

Это было полезно?

Решение

Похоже, нет никакого мангуозного способа сделать это, поэтому я использую рекурсивную функцию поиска, подобную этой, для поиска вложенной папки:

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 вы можете загрузить только корневой документ, а затем извлечь из него подкабильный документ на стороне клиента (с любого уровня глубокого).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top