【发布时间】:2014-01-05 12:08:21
【问题描述】:
是否可以在同一阶段使用$project 阶段中定义的变量?
例如,我有这个聚合管道:
pipeline = [
{ '$match': {} },
{
'$group': {
'_id': '$_id',
'n': { '$first': 'n' }
}
},
{
'$project': {
'name': 1,
'n': 1,
'revenue': { '$multiply': ['$n', 2] },
'cost': { '$multiply': ['$revenue', 0.25] }
}
}
]
我想在同一个$project 阶段使用$revenue 变量(我在$project 中定义)来计算cost 的值,但这不起作用。
有什么方法可以轻松有效地做到这一点?我考虑过做几个预测,但每次我需要计算一个额外的变量时,我都需要投影许多变量(~25 个变量),而且我有一堆变量要计算,它们相互依赖(~5 个变量),而且我的代码可能看起来很糟糕,因为会有很多相同变量的投影。我该怎么办?
【问题讨论】:
标签: python mongodb pymongo aggregation-framework