$ group,_id等于null还是Array.prototype.length?

时间:2017-01-16 14:05:56

标签: mongodb mongodb-query aggregation-framework

对Mongo集合执行聚合操作后,我的最后一步是获取数组结果的长度。现在我有两个选择:

再使用$group _id等于null的{​​{1}}阶段:

db.col.aggregate([
  // ...,
  {
    $group: {
      _id: null,
      length: { $sum: 1},
    },
  },
]);

或使用.length方法:

db.col.aggregate([
  // ...
]).length;

它们都运作良好并给我预期的结果。我只是想知道哪种方式在性能方面更好。你觉得怎么样?

1 个答案:

答案 0 :(得分:0)

我会使用.length方法,因为它可能是JS Array对象中的一个属性(它可能取决于你的代码使用的JS引擎)。

我相信使用$group会使mongo引擎处理所有数据,然后计算它返回的文档数量,这会慢得多。

正如费利克斯所说,你可以运行一个小基准,看看哪个选项更快。