目前我正在做一个个人项目,我正在为两种在 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/