Javascript Mongodb并行运行数千个查询
我们有一个PHP应用程序,它在mongo集合中运行了30k唯一查询,性能良好Javascript Mongodb并行运行数千个查询,javascript,node.js,mongodb,concurrency,Javascript,Node.js,Mongodb,Concurrency,我们有一个PHP应用程序,它在mongo集合中运行了30k唯一查询,性能良好 foreach ($request->numbers as $number) { $query = [ 'cn' => $ddd, 'prefix_init' => array('$lte' => (int) $mobile), 'prefix_final' => array('$gte' => (int) $mobile)
foreach ($request->numbers as $number) {
$query = [
'cn' => $ddd,
'prefix_init' => array('$lte' => (int) $mobile),
'prefix_final' => array('$gte' => (int) $mobile)
];
$result = $cadup_full->findOne($query);
$results[] = $result;
}
我们在nodejs中转换了该应用程序,并开始出现性能问题,因为PHP中的查询是以同步方式触发的,nodejs循环使所有30k同时运行,从而导致性能下降
我如何利用仍然使用nodejs运行这些查询?正如JohnnyHK提到的,您可以使用,特别是 我不懂PHP,所以这里是对它在node中的等效语法的伪/粗略猜测
// max number of requests running at once
let concurrencyLimit = 10;
async.mapLimit(numbers, concurrencyLimit, function(number, numberCallback) {
let query = {
"cn": ddd,
"prefix_init": {
$lte: number
},
"prefix_final": {
$gte: number
}
}
// where numberCallback is function(error, document);
myCollection.findOne(query, numberCallback);
}, function(error, results) {
// here is your results array;
console.log(results);
});
正如JohnnyHK提到的,您可以使用,特别是 我不懂PHP,所以这里是对它在node中的等效语法的伪/粗略猜测
// max number of requests running at once
let concurrencyLimit = 10;
async.mapLimit(numbers, concurrencyLimit, function(number, numberCallback) {
let query = {
"cn": ddd,
"prefix_init": {
$lte: number
},
"prefix_final": {
$gte: number
}
}
// where numberCallback is function(error, document);
myCollection.findOne(query, numberCallback);
}, function(error, results) {
// here is your results array;
console.log(results);
});
你能补充更多细节吗?mongo版本,使用了存储引擎,并解释了此查询的统计数据转储?请使用异步流控制库来管理它。@JohnnyHK,您能提供一个实现示例吗?t你能补充更多细节吗?mongo版本,使用了存储引擎,并解释了此查询的统计数据转储?请使用异步流控制库来管理它。@JohnnyHK,您能提供一个实现示例吗?泰