Выполнить еще один запрос для каждой записи, выбранной в пн goose? - PullRequest
0 голосов
/ 01 февраля 2020

Я использую Nodejs (12.14.1 LTS) & mon goose (5.8.11)
Рассмотрим следующие коллекции

collection1: {  
  // collection1 fields  
  rank_type : "some_value", 
  col1_price : "some_value",  
  col1_location : "some_value"   
}

collection2 : {  
  // collection2 fields  
  price : "some_value",  
  location: "some_value"  
}

Мне нужно сделать следующие вещи в одном query
1. Извлечение записей из collection1 на основе некоторого условия
2. При каждой записи, полученной на первом шаге, нужно выбрать записи из collection2

// explained in sudo code or some simplified way  
fetch from collection1 on basis of some condition {  
    loop on documents fetched from collection1 (docN) {  
      if(docN.rank_type === "high"){
         fetch documents from collection2 with conditions ( price : docN.col1_price, location:docN.col1_location)  
      } else if(docN.rank_type === "medium"){
         fetch documents from collection2 with some other conditions ( price : docN.col1_price, location:docN.col1_location, more_conditions_will_be_there)
      }
    }  
} 

Я хочу выводить данные ниже моды

[
  {
    col1_id : _id_from_col1_document
    matched_details : [
      {document_from_col2},
      {document_from_col2}...
    ] 
  },
  ... other_records
]

То, что я пробовал, это

var cursor = collection1.find(some_condition).cursor();
cursor.on("data", doc => {
   if(doc.rank_type === "high"){
      collection2.find(some_conditions).then(result_documents =>{
         // did some loging
      })
   } if(docN.rank_type === "medium"){
      collection2.find(some_other_conditions).then(result_documents =>{
         // did some loging
      })
   }
});

В приведенном выше коде я не могу понять, когда операция завершится и как получить желаемый результат, упомянутый выше.

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