$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 ]
该操作返回以下内容: