Promise的MongoDB查询性能



目前我正在处理一个个人项目,我正在努力解决在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()方法应该更快。首先,它发送一个查询,而不是为每个订单发送一个,这样到数据库的往返次数就更少了。性能影响要小得多,还因为您正在为每个findOne()调用创建一个新的promise。

此外,我不认为GetOrders()的写作实际上有效。我想你是想用Order.findById(orderId)Order.findOne({ _id: orderId })

最新更新