Я работаю над сценарием, в котором мне нужно взять данные из коллекции mongodb, обработать их с помощью некоторых переименований и сопоставлений и поместить данные в другую коллекцию.Я использую этот скрипт в expressjs с нативным клиентом mongodb для nodejs.
Вот мой скрипт со всеми запущенными функциями
const syncCustomerWithCustomerv1 = function(params){
utils.connectDB().then((client) => {
Promise.map(aggregateDocumentsv1(client, params), function(cursor){
Promise.map(getCustomerDatav1(cursor), function(customer){
var hashedMap = makeHashedObjectv1(customer);
makeDatav1(client, customer, hashedMap).then((response)=> {
console.log("success");
}).catch((error) => {
console.log(error);
reject(error);
})
}, {concurrency: 500});
}, {concurrency: 500}).then((reponse) => {
console.log("data inserted");
})
}).catch((error) => {
console.log(error);
});
}
Теперь в функции с именем syncCustomerWithCustomerv1 я могу получитьданные из старой коллекции в новую коллекцию, но я не думаю, что какие-либо параллельные запросы принимаются в этом.в то время как вышеуказанная операция выполняется, я не могу нажать api, поэтому при выполнении операции она не позволяет другим запросам выполняться.
в файле Promise.map (aggregateDocumentsv1)), Я беру список курсоров.каждый элемент в массиве listOfCursor имеет курсор, который при запросе дает 500 записей.
Я ожидаю, что он получает каждый курсор и назначает его следующему Promise.map (getCustomerDatav1 (cursor)),Теперь это приводит к каждому клиенту, который у меня есть в моей предыдущей коллекции монго, и мы можем выполнить операции сопоставления с полученным объектом, а затем вставить данные в новую коллекцию.
Если кто-то получитпроблема и знаю, как я могу сделать его более параллельным, чтобы я мог запустить этот скрипт, а также мои API также не получали простоев.