mongoDB查找与聚合性能

时间:2017-06-20 10:16:18

标签: mongodb mongodb-query aggregation-framework

我正在尝试衡量mongoDB的查找与聚合性能。 有没有办法比较聚合与匹配并找到查询性能。

目前我正在使用javascript来衡量它。 如

 var start = (new Date).getTime();db.assets.find({"catalog_id":"f1a7669654584a42958d9589cf37d173","albums":{"$elemMatch":{"id":"5f7938ce6e2718eb776f82474f2e093f","order":{"$exists":false}}}});var end = (new Date).getTime();print("elapsed " + (end - start) +" msec");


var start = (new Date).getTime();db.assets.aggregate([{"$match":{"catalog_id":"f1a7669654584a42958d9589cf37d173","albums":{"$elemMatch":{"id":"5f7938ce6e2718eb776f82474f2e093f","order":{"$exists":false}}}}}]);var end = (new Date).getTime();print("elapsed " + (end - start) +" msec");

但它对我来说似乎并不合适。 有人可以建议其他方法来做到这一点。

2 个答案:

答案 0 :(得分:0)

db.collection.explain() 操作可以返回以下信息:

如何用find()解释?

db.assets.explain("executionStats").find({
  "catalog_id":"f1a7669654584a42958d9589cf37d173",
  "albums":{"$elemMatch":{"id":"5f7938ce6e2718eb776f82474f2e093f","order":{"$exists":false}}}
});

如何用aggregate()解释?

db.assets.explain("executionStats").aggregate([
  {
    "$match":{
      "catalog_id":"f1a7669654584a42958d9589cf37d173",
      "albums":{"$elemMatch":{"id":"5f7938ce6e2718eb776f82474f2e093f","order":{"$exists":false}}}
    }
  }
]);

答案 1 :(得分:-1)

kubectl proxy --address=clusterIP --port 8001 --accept-hosts '.*'方法用于在单个集合中查找数据作为您的条件。而当您需要使用一个或多个表执行find()时使用aggregation。我并不是说您无法使用joins(),但如果您可以使用aggregation获取数据,则无需使用find()。如果使用`populate

在其他集合中有一些唯一键,也可以执行aggregation