假设我有一个处理n个用户的脚本。脚本可以从两种方式中选择一种,假设有足够的资源,哪种方式更快?我可以使用Promise.all
或async.parallel
。
选择1
function processUsers(userIds) {
monog.find({_id: { $in: userIds }, (userDocs) => {
const tasks = userDocs.map((userDoc) => processUser(userDoc))
async.parallel(tasks, (err, results) => console.log('finished'))
});
}
选择2
function processUsers(userIds) {
const tasks = userIds.map((userId) => {
mongo.findOne({_id: userId}, (err, userDoc) => {
processUser(userDoc);
})
})
async.parallel(tasks, (err, results) => console.log('finished'))
}
最佳答案
最好的选择是一次全部阅读,或者至少分大块阅读。绝对不要一个一个地读,那会有很多不必要的数据库流量。如果你认为你有足够的记忆力,就立刻把所有的东西都读出来。
另外,随机思考,但如果processUser
涉及db write,则可以收集结果并使用bulkWrite来加快速度。
关于node.js - 使用MongoDB在Node.js中进行扩展,我应该何时一次查询所有ID,而不是并行查询每个ID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40711392/