Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB查询性能与承诺_Javascript_Node.js_Mongodb_Mongoose_Es6 Promise - Fatal编程技术网

Javascript 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

目前我正在做一个个人项目,我正在努力用两种方式在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()
方法应该更快。首先,它发送一个查询,而不是每个订单发送一个查询,因此减少了到数据库的往返次数。一个不太重要的性能影响也来自于您正在创建一个新的


另外,我认为编写的
GetOrders()
实际上不起作用。我想您是想使用,或者
Order.findOne({u id:orderId})

第一个向数据库发送每个id的查询,而第二个向数据库发送一个对一批id的查询。显然,查询越少,性能越好。