Javascript MongoDB查询性能与承诺
目前我正在做一个个人项目,我正在努力用两种方式在MongoDB上进行查询Javascript MongoDB查询性能与承诺,javascript,node.js,mongodb,mongoose,es6-promise,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
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()
方法应该更快。首先,它发送一个查询,而不是每个订单发送一个查询,因此减少了到数据库的往返次数。一个不太重要的性能影响也来自于您正在创建一个新的
另外,我认为编写的
GetOrders()
实际上不起作用。我想您是想使用,或者Order.findOne({u id:orderId})
第一个向数据库发送每个id的查询,而第二个向数据库发送一个对一批id的查询。显然,查询越少,性能越好。