$reduce - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$reduce

Der $reduce Aggregationsoperator in Amazon DocumentDB wird verwendet, um eine Funktion mit zwei Argumenten kumulativ auf die Elemente eines Arrays anzuwenden, um das Array auf einen einzigen Wert zu reduzieren. Dieser Operator ist besonders nützlich für die Durchführung komplexer Berechnungen oder Transformationen von Array-Daten innerhalb der Aggregationspipeline.

Parameter

  • input: Das Array, das reduziert werden soll.

  • initialValue: Der Anfangswert, der bei der Reduktionsoperation verwendet werden soll.

  • in: Der Ausdruck, der für jedes Element des input Arrays ausgewertet werden soll. Dieser Ausdruck sollte einen Wert zurückgeben, der in der nächsten Iteration der Reduktion verwendet wird.

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt, wie der $reduce Operator verwendet wird, um die Summe aller Elemente in einem Array zu berechnen.

Erstellen Sie Beispieldokumente

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] } ])

Beispiel für eine Abfrage

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

Ausgabe

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

Der $reduce Operator iteriert über das items Array und fügt jedes Element dem initialValue Wert 0 hinzu. Das Ergebnis ist die Summe aller Elemente im Array.

Codebeispiele

Um ein Codebeispiel für die Verwendung des $reduce Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

Node.js

Hier ist ein Beispiel für die Verwendung des $reduce Operators in einer Node.js -Anwendung:

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

Hier ist ein Beispiel für die Verwendung des $reduce Operators in einer Python-Anwendung:

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()