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