假设我有一个处理n个用户的脚本。脚本可以从两种方式中选择一种,假设有足够的资源,哪种方式更快?我可以使用Promise.allasync.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/

10-11 03:10