gpt4 book ai didi

python - Mongo 聚合 - 使用 $project 中创建的变量

转载 作者:可可西里 更新时间:2023-11-01 09:52:23 28 4
gpt4 key购买 nike

是否可以在同一阶段使用 $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 个变量),而且我的代码可能看起来很糟糕,因为会有很多相同变量的投影。我该怎么办?

最佳答案

不,但您可以嵌套投影运算符作为变通方法:

pipeline = [{   
'$match': {}
},
{
'$group': {
'_id': '$_id',
'n': {'$first': 'n'}
},
{
'$project': {
'name': 1,
'n': 1,
'revenue': {'$multiply': ['$n', 2]},
'cost': {'$multiply': [{'$multiply': ['$n', 2]}, 0.25]}
}
}]

在这种情况下,您可以简化为:

pipeline = [{   
'$match': {}
},
{
'$group': {
'_id': '$_id',
'n': {'$first': 'n'}
},
{
'$project': {
'name': 1,
'n': 1,
'revenue': {'$multiply': ['$n', 2]},
'cost': {'$multiply': ['$n', 2, 0.25]}
}
}]

关于python - Mongo 聚合 - 使用 $project 中创建的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639077/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com