Skip to main content

addFields

Definition

The addFields stage adds new fields to documents, the output from addFields are documents that contain all existing fields and newly added fields.

Read the official MongoDB documentation

Syntax

addFields has the following form:

addFields varname=expression (,varname=expression)*

Behaviour

addFields appends new fields to existing documents. You can include one or more addFields stages in an aggregation operation.

To add a field or fields to embedded documents (including documents in arrays) use the dot notation.

To add an element to an existing array field with addFields, use with concatArrays

Examples

Using two addFields stages

// Create a new collection in the private database called scores and add 2 documents
o1 = object as #Object
student = "Maya"
homework = [ 10, 5, 10 ]
quiz = [ 10, 8 ]
extraCredit = 0
end
o1.id = 1
save ${object:"scores"/o1}

o2 = object as #Object
student = "Ryan"
homework = [ 5, 6, 5 ]
quiz = [ 8, 8 ]
extraCredit = 8
end
o2.id = 2
save ${object:"scores"/o2}

// Use 2 addFields operations to include 3 new fields in the output documents
aggregate ${object:"scores"}
addFields totalHomework = sum("$homework"), totalQuiz = sum("$quiz")
addFields totalScore=add("$totalHomework","$totalQuiz","$extraCredit")
end

Adding fields to an embedded document

Use dot notation to add new fields to embedded documents. This example create a collection called vehicles and adds a new field fuel_type to the embedded document specs

json = `
[
{ _id: 1, type: "car", specs: { doors: 4, wheels: 4 } },
{ _id: 2, type: "motorcycle", specs: { doors: 0, wheels: 2 } },
{ _id: 3, type: "jet ski" }
]
`
objects = ${json:json}
save ${object:"vehicles"/objects}

aggregate ${object:"vehicles"}
addFields "specs.fuel_type"="unleaded"
end

Overwriting an existing field

Specifying an existing field name in an addFields operation causes the original field to be replaced.

Using the prior example data in the vehicles collection.

aggregate ${object:"vehicles"}
match _id=1
addFields type="Motor Car"
end

Add elements to an array

Using the scores collection created earlier, you can use addFields with concatArrays to add an element to an existing array

aggregate ${object:"scores"}
match _id=1
addFields homework=concatArrays("$homework", [7])
end