1

鉴于:

一个集合,我有一些列,其中两个我想获取所有使用的值

目前我正在做两个聚合,如下所示(简化)

db['myCollection'].aggregate(
  [{$group: {"_id":"$firstCol"}}  ]
);

db['myCollection'].aggregate(
  [{$group: {"_id":"$secondCol"}}  ]
);

但是运行两个聚合感觉像是在浪费资源。有没有办法同时获得两个分组结果?

我考虑过将它们组合起来,然后将其拆分为代码。

4

1 回答 1

1

您可以在$addToSet运算符的帮助下这样做

db['myCollection'].aggregate([
    {
        $group: {
            _id: null,
            col1: {
                $addToSet: "$firstCol"
            },
            col2: {
                $addToSet: "$secondCol"
            }
        }
    }
])

如果您在目标字段上有索引,那么我会选择具有distinct的单独调用,因为这可以利用这些并可能导致更少的工作量/更快的执行时间。

db[myCollection].distinct('firstCol')
于 2016-07-14T07:17:59.017 回答