AWS documentdb documentation change
Summary
Added documentation for the $set aggregation stage in Amazon DocumentDB version 8.0, including syntax, parameters, MongoDB shell example, and code examples in Node.js and Python
Security assessment
This change adds documentation for a new aggregation operator ($set) in DocumentDB version 8.0. The content includes standard usage examples and code samples with connection strings that include TLS parameters (tls=true, tlsCAFile=global-bundle.pem). These TLS parameters are standard security practices for DocumentDB connections but are not newly introduced in this documentation. The change appears to be routine feature documentation for a new aggregation stage rather than addressing a specific security vulnerability or weakness.
Diff
diff --git a/documentdb/latest/developerguide/set-stage.md b/documentdb/latest/developerguide/set-stage.md index 8b1378917..112e6370e 100644 --- a//documentdb/latest/developerguide/set-stage.md +++ b//documentdb/latest/developerguide/set-stage.md @@ -0,0 +1 @@ +[](/pdfs/documentdb/latest/developerguide/developerguide.pdf#set-stage "Open PDF") @@ -1,0 +3,136 @@ +[Documentation](/index.html)[Amazon DocumentDB](/documentdb/index.html)[Developer Guide](what-is.html) + +Example (MongoDB Shell)Code examples + +# $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() + + **Javascript is disabled or is unavailable in your browser.** + +To use the Amazon Web Services Documentation, Javascript must be enabled. Please refer to your browser's Help pages for instructions. + +[Document Conventions](/general/latest/gr/docconventions.html) + +$second + +$setDifference + +Did this page help you? - Yes + +Thanks for letting us know we're doing a good job! + +If you've got a moment, please tell us what we did right so we can do more of it. + +Did this page help you? - No + +Thanks for letting us know this page needs work. We're sorry we let you down. + +If you've got a moment, please tell us how we can make the documentation better.