避免在sucesives查询中重复Mongodb聚合的各个阶段

时间:2017-07-18 09:19:54

标签: mongodb aggregation-framework

我正在使用mongodb聚合框架使用不同字段对文档进行分组,重复此查询(只更改每个案例的组_id)。

collection.aggregate([
{'$match'  : {'attr1': {'$in': list_of_values}}},
{'$project': {
    'attr1'    : '$attr1',
    'strict': {'$cond':[{'$eq': [{'$size': {'$setDifference': ['$nocomp', '$exceps']}}, 0]}, 1, 0]},
    'score' : {'$divide': [
        {'$subtract': [{'$size': '$controls'}, {'$size': {'$setDifference': ['$nocomp', '$exceps']}}]},
        {'$size': '$controls'}
    ]}
}},
{'$lookup': {'from': 'another', 'localField': 'attr1', 'foreignField': '_id', 'as': 'attr1doc'}},
{'$unwind': '$attr1doc'},
{'$group' : {'_id': '$attr1doc.type', 'avg_score': {'$avg': '$score'}, 'avg_strict': {'$avg': '$strict'}, 'count': {'$sum': 1}}},
{'$unwind': '$_id'}

])

结果是这种形式的文件:

{
 '_id': 'some_value',
 'avg_score': 0.6,
 'avg_strict': 0.4
 }

现在,我正在重复多次操作,但是使用'attr1doc'的不同字段来分组文档而不是'attr1doc.type'。 有没有办法避免每次重复管道的第一阶段,因为结果将是相同的(假设集合没有改变)?

0 个答案:

没有答案