2015-08-13 4 views
0

Я относительно новичок в mongodb, поэтому, пожалуйста, будьте терпеливы. Предположим, у меня есть следующие документы в моей коллекции:Найти документ в цикле

{_id:"3",name:'three',parentId:"2.1"}, 
{_id:"2.1",name:'two1',parentId:"1"}, 
{_id:"2.2",name:'two2',parentId:"1"}, 
{_id:"1",name:'one'} 

У меня есть db.mycoll.find({name:"three"}), который возвращает мне документ с _id 3. Мне нужно на основе этого найти документ с _ID 1.

В основном это означает что-то вроде структуру папок. Таким образом, верхний уровень «один», который имеет «два1» и «два2». «Два1», в свою очередь, имеет «три». Имея идентификатор «три», мне нужно получить его родителя верхнего уровня. Есть ли способ сделать это в монго или мне нужно вернуть результаты клиенту, обработать их там и вызвать мангу для каждой итерации?

ответ

0

Вот что работает для меня:

...find().forEach(
     function getParent(itemId) { 
      var sub = db.mycoll.findOne({_id: itemId}); 
      if(sub) { 
       if(sub.parentId) { 
        getParent(sub.parentId) 
       } 
       else /*top level*/ 
        print(sub.name) 
      } 
     } 
    ) 

Надеется, что это помогает кто-то еще

Смежные вопросы