$reduce - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$reduce

L'operatore di $reduce aggregazione in Amazon DocumentDB viene utilizzato per applicare cumulativamente una funzione di due argomenti agli elementi di un array per ridurre l'array a un singolo valore. Questo operatore è particolarmente utile per eseguire calcoli o trasformazioni complessi sui dati dell'array all'interno della pipeline di aggregazione.

Parametri

  • input: L'array da ridurre.

  • initialValue: Il valore iniziale da utilizzare nell'operazione di riduzione.

  • in: L'espressione da valutare su ogni elemento dell'inputarray. Questa espressione dovrebbe restituire un valore che verrà utilizzato nella successiva iterazione della riduzione.

Esempio (MongoDB Shell)

L'esempio seguente mostra come utilizzare l'$reduceoperatore per calcolare la somma di tutti gli elementi di un array.

Crea documenti di esempio

db.orders.insertMany([ { "_id": 1, "items": [1, 2, 3, 4, 5] }, { "_id": 2, "items": [10, 20, 30] }, { "_id": 3, "items": [5, 15, 25, 35] }, { "_id": 4, "items": [100, 200] } ])

Esempio di interrogazione

db.orders.aggregate([ { $project: { total: { $reduce: { input: "$items", initialValue: 0, in: { $add: ["$$value", "$$this"] } } } } } ])

Output

[ { "_id": 1, "total": 15 }, { "_id": 2, "total": 60 }, { "_id": 3, "total": 80 }, { "_id": 4, "total": 300 } ]

L'$reduceoperatore esegue un'iterazione sull'itemsarray, aggiungendo ogni elemento al valore initialValue di 0. Il risultato è la somma di tutti gli elementi dell'array.

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $reduce comando, scegliete la scheda relativa alla lingua che desiderate utilizzare:

Node.js

Ecco un esempio di utilizzo dell'$reduceoperatore in un'applicazione Node.js:

const { MongoClient } = require("mongodb"); async function main() { 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 orders = db.collection("orders"); const result = await orders.aggregate([ { $project: { total: { $reduce: { input: "$items", initialValue: 0, in: { $add: ["$$value", "$$this"] } } } } } ]).toArray(); console.log(result); await client.close(); } main();
Python

Ecco un esempio di utilizzo dell'$reduceoperatore in un'applicazione python:

from pymongo import MongoClient def main(): client = MongoClient("mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false") db = client["test"] orders = db["orders"] result = list(orders.aggregate([ { "$project": { "total": { "$reduce": { "input": "$items", "initialValue": 0, "in": { "$add": ["$$value", "$$this"] } } } } } ])) print(result) client.close() if __name__ == "__main__": main()