javascript - 使用 Promise 的 MongoDB 查询性能

标签 javascript node.js mongodb mongoose es6-promise

目前我正在做一个个人项目,我正在为两种在 MongoDB 上进行查询的方法而苦苦挣扎。

CustomerSchema.methods.GetOrders = function(){
    return Promise.all(
        this.orders.map(orderId => Order.findOne(orderId))
    );
};
// This will find all of an user order by their ObjectId

const orders = await Order.find({customerId:req.params});

我的问题是哪一种方法更好,为什么?或者它们的优缺点是什么?

我这里测试了一下,第一种方法是双倍执行的。

最佳答案

find() 方法应该更快,原因有很多。首先,它发送一个查询而不是针对每个订单发送一个查询,因此到数据库的往返次数更少。您正在创建一个新的 promise for every findOne() call 的事实对性能的影响要小得多。 .

此外,我不认为所写的 GetOrders() 确实有效。我认为你打算使用 Order.findById(orderId) , 或 Order.findOne({ _id: orderId })

关于javascript - 使用 Promise 的 MongoDB 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51294912/

相关文章:

javascript - 无法单击表格头元素

node.js - Microsoft 聊天机器人 (Node.js) 是否在单个 LUIS.AI 应用程序中支持多种语言?

javascript - 作为一个整体解析具有 promise 属性的对象的更好方法?

node.js - 使用 express-session、connect-mongo 和 mongoose 存储 session

node.js - 在模型文件中获取 Mongoose 未定义错误

javascript - ThreeJS - 来自 .json 3D 文件的多个网格

javascript - 了解未记录的 Vue.js 属性 (Vue + Pug)

javascript - 如何使用 JavaScript 更新兄弟复选框?

javascript - 变量未将数据返回到 NODE 中的浏览器

javascript - 如何仅在 mongoDB 和 meteor 中获取不同的值?