

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.

# \$1reduce
<a name="reduce"></a>

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)
<a name="reduce-examples"></a>

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
<a name="reduce-code"></a>

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

------