Mongodb Mongo聚合-用于创建字段的自定义函数
我希望能够将字段创建为Mongodb Mongo聚合-用于创建字段的自定义函数,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我希望能够将字段创建为newField=someFunction(currentDocument),但这似乎不受支持。它是?我知道我可以在map reduce框架内完成这项工作,但我需要留在聚合框架内。对于某些边缘情况,我可以让事情正常进行,例如: items.aggregate([ { $project: { _tmp: ['$a', '$a', '$b'], }, }, { $unwind: '$_tmp', }, { $gro
newField=someFunction(currentDocument)
,但这似乎不受支持。它是?我知道我可以在map reduce框架内完成这项工作,但我需要留在聚合框架内。对于某些边缘情况,我可以让事情正常进行,例如:
items.aggregate([
{
$project: {
_tmp: ['$a', '$a', '$b'],
},
},
{
$unwind: '$_tmp',
},
{
$group: {
_id: '$_id',
aab: { $sum: '$_tmp' }
}
},
]);
非常简单地创建了一个等于
2a+b
的字段,但看起来像是杀伤力过大和效率低下。您不能在聚合管道中使用自定义函数;所有操作都必须使用内置操作符完成
也就是说,您可以通过在$project
中使用来改进您目前所拥有的:
items.aggregate([
{$project: {aab: {$add: ['$a', '$a', '$b']}}}
])
或者更明确地说:
items.aggregate([
{$project: {aab: {$add: [{$multiply: [2, '$a']}, '$b']}}}
])
我发现了这个。这很好,可能足够满足我的需要了。谢谢