Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo聚合-用于创建字段的自定义函数_Mongodb_Aggregation Framework - Fatal编程技术网

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']}}}
])

我发现了这个。这很好,可能足够满足我的需要了。谢谢