$addFields
¶3.4版的新功能。
将新字段添加到文档。$addFields
输出包含输入文档中所有现有字段和新添加的字段的文档。
该$addFields
阶段等效于
$project
明确指定输入文档中所有现有字段并添加新字段的阶段。
注意
从4.2版开始,MongoDB添加了一个新的聚合管道阶段$set
,该阶段是的别名$addFields
。
$addFields
具有以下形式:
指定要添加的每个字段的名称,并将其值设置为 聚合表达式。有关表达式的更多信息,请参见表达式。
重要
如果新字段的名称与现有字段名称(包括_id
)相同$addFields
,则使用指定表达式的值覆盖该字段的现有值。
$addFields
将新字段追加到现有文档。您可以$addFields
在聚合操作中包括一个或多个阶段。
要将一个或多个字段添加到嵌入式文档(包括数组中的文档),请使用点符号。参见示例。
要将元素添加到现有的数组字段中$addFields
,请使用$concatArrays
。参见示例。
在$addFields
操作中指定现有字段名称会导致替换原始字段。
名为的集合animals
包含以下文档:
以下$addFields
操作指定该cats
字段。
该操作返回以下文档:
可以将一个字段替换为另一个字段。在以下示例中,该item
字段替代了该_id
字段。
名为的集合fruit
包含以下文档:
以下聚集操作用于$addFields
将_id
每个文档的字段替换为字段的值,并将item
字段替换item
为静态值。
该操作返回以下内容:
scores
使用以下内容创建一个样本集合:
可以使用$addFields
与一个$concatArrays
表达将元素添加到现有的阵列字段。例如,以下操作用于$addFields
将一个homework
字段替换为
一个新数组,该数组的元素是当前
homework
数组与另一个包含新score的数组连接在一起。[ 7 ]
该操作返回以下内容: