Получение рекурсивно-вложенного документа - Mongoose / Mongodb - PullRequest
1 голос
/ 04 сентября 2011

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

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

Ответы [ 2 ]

3 голосов
/ 09 сентября 2011

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

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. здесь используется библиотека подчеркивания

2 голосов
/ 05 сентября 2011

Быстрый ответ: вы не можете загрузить вложенный документ, потому что mongodb его не поддерживает. В mongodb вы можете загрузить только корневой документ, а затем извлечь из него вложенный документ на стороне клиента (с любого уровня глубины).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...