$set - Amazon DocumentDB
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

$set

New from version 8.0

Not supported by Elastic cluster.

The $set aggregation stage in Amazon DocumentDB allows you to add new fields or update existing field values in documentation during an aggregation pipeline.

Parameters

  • expression: The expression to evaluate. This can be any valid aggregation expression, including field references and arithmetic operations.

Example (MongoDB Shell)

The following example demonstrates the use of the $set aggregation stage to calculate totals by multiplying the quantity field by the price field.

Create sample documents

db.inventory.insertMany([ { item: "pencil", quantity: 100, price: 0.24}, { item: "pen", quantity: 204, price: 1.78 } ]);

Aggregation example

db.inventory.aggregate([ { $set: { total: { $multiply: ["$quantity", "$price"] } } } ])

Output

[ { _id: ObjectId('69248951d66dcae121d2950d'), item: 'pencil', quantity: 100, price: 0.24, total: 24 }, { _id: ObjectId('69248951d66dcae121d2950e'), item: 'pen', quantity: 204, price: 1.78, total: 363.12 } ]

Code examples

To view a code example for using the $set command, choose the tab for the language that you want to use:

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const inventory = db.collection('inventory'); const result = await inventory.aggregate([ { $set: { total: { $multiply: ["$quantity", "$price"] } } } ]).toArray(); console.log(result); client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] inventory = db['inventory'] result = list(inventory.aggregate([ { "$set": { "total": { "$multiply": ["$quantity", "$price"] } } } ])) print(result) client.close() example()