MongoDB的$ group聚合中$ first和$ last之间是否有显着的性能差异?

时间:2015-05-29 13:24:36

标签: mongodb aggregation-framework

我在集合中使用MongoDB的聚合框架,其中每个文档都包含零个或多个“标记”的数组。标签可以出现在一个或多个文档上,但就我的目的而言,仅在一个文档上使用的标签是无用的。要查找仅出现一次的标记以及这些标记所属的文档,我可以这样做:

db.docs.aggregate([
    {$unwind: "$tags"},
    {$group: {_id: "$tags", count: {$sum: 1}, docId: {$last: "$_id"}}},
    {$match: {count: 1}}])

但是因为我只关心一次出现的标签,所以第一个文档与最后一个文档相同,所以我会得到相同的结果:

db.docs.aggregate([
    {$unwind: "$tags"},
    {$group: {_id: "$tags", count: {$sum: 1}, docId: {$first: "$_id"}}}, 
    {$match: {count: 1}}])

使用$ first或$ last与聚合框架之间存在显着的性能差异吗?直观地说,它们似乎都应该快速($ first应该检查结果是否存在,如果不存在则只写入它; $ last应该只覆盖每次存在的任何东西),但是我已经被烧掉了过去我认为相同的东西。

0 个答案:

没有答案