On this page本页内容
$addFields
¶New in version 3.4.版本3.4中的新功能。
Adds new fields to documents. 向文档中添加新字段。$addFields
outputs documents that contain all existing fields from the input documents and newly added fields.$addFields
输出包含输入文档和新添加字段中所有现有字段的文档。
The $addFields
stage is equivalent to a $project
stage that explicitly specifies all existing fields in the input documents and adds the new fields.$addFields
阶段相当于$project
阶段,该阶段显式指定输入文档中的所有现有字段,并添加新字段。
Note
Starting in version 4.2, MongoDB adds a new aggregation pipeline stage 从4.2版开始,MongoDB添加了一个新的聚合管道阶段$set
that is an alias for $addFields
.$set
,它是$addFields
的别名。
$addFields
has the following form:具有以下形式:
Specify the name of each field to add and set its value to an aggregation expression. 指定要添加的每个字段的名称,并将其值设置为聚合表达式。For more information on expressions, see Expressions.有关表达式的详细信息,请参阅表达式。
Important
If the name of the new field is the same as an existing field name (including 如果新字段的名称与现有字段名称(包括_id
), $addFields
overwrites the existing value of that field with the value of the specified expression._id
)相同,$addFields
将用指定表达式的值覆盖该字段的现有值。
$addFields
appends new fields to existing documents. $addFields
将新字段附加到现有文档中。You can include one or more 可以在聚合操作中包含一个或多个$addFields
stages in an aggregation operation.$addFields
阶段。
To add field or fields to embedded documents (including documents in arrays) use the dot notation. 要向嵌入文档(包括数组中的文档)添加一个或多个字段,请使用点表示法。See example.请参阅示例。
To add an element to an existing array field with 要使用$addFields
, use with $concatArrays
. $addFields
将元素添加到现有数组字段中,请与$concatArrays
一起使用。See example.请参阅示例。
$addFields
Stages$addFields
阶段¶A collection called 名为scores
contains the following documents:scores
的集合包含以下文档:
The following operation uses two 以下操作使用两个$addFields
stages to include three new fields in the output documents:$addFields
阶段在输出文档中包含三个新字段:
The operation returns the following documents:该操作将返回以下文档:
Use dot notation to add new fields to embedded documents. 使用点符号向嵌入的文档添加新字段。A collection called 一个名为vehicles
contains the following documents:vehicles
的集合包含以下文档:
The following aggregation operation adds a new field 下面的聚合操作将一个新的字段fuel_type
to the embedded document specs
.fuel_type
添加到嵌入的文档specs
中。
The operation returns the following results:操作返回以下结果:
Specifying an existing field name in an 在$addFields
operation causes the original field to be replaced.$addFields
操作中指定现有字段名会导致替换原始字段。
A collection called 名为animals
contains the following document:animals
的集合包含以下文档:
The following 下面的$addFields
operation specifies the cats
field.$addFields
操作指定cats
字段。
The operation returns the following document:该操作将返回以下文档:
It is possible to replace one field with another. 可以用另一个字段替换一个字段。In the following example the 在下面的示例中,item
field substitutes for the _id
field.item
字段替代了_id
字段。
A collection called 名为fruit
contains the following documents:fruit
的集合包含以下文档:
The following aggregration operation uses 下面的聚合操作使用$addFields
to replace the _id
field of each document with the value of the item
field, and replaces the item
field with a static value.$addFields
将每个文档的_id
字段替换为item
字段的值,并将item
字段替换为静态值。
The operation returns the following:该操作返回以下内容:
Create a sample 使用以下内容创建一个样本scores
collection with the following:scores
集合:
You can use 可以将$addFields
with a $concatArrays
expression to add an element to an existing array field. $addFields
与$concatArrays
表达式一起使用,将元素添加到现有数组字段中。For example, the following operation uses 例如,下面的操作使用$addFields
to replace the homework
field with a new array whose elements are the current homework
array concatenated with another array containing a new score [ 7 ]
.$addFields
将homework
字段替换为一个新数组,该数组的元素是当前homework
数组与另一个包含新分数[7]
的数组连接起来的数组。
The operation returns the following:该操作返回以下内容: