

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Operator `$reduce` agregasi di Amazon DocumentDB digunakan untuk menerapkan fungsi dua argumen secara kumulatif ke elemen array untuk mengurangi array menjadi satu nilai. Operator ini sangat berguna untuk melakukan perhitungan atau transformasi kompleks pada data array dalam pipeline agregasi.

**Parameter**
+ `input`: Array yang akan dikurangi.
+ `initialValue`: Nilai awal yang akan digunakan dalam operasi reduksi.
+ `in`: Ekspresi yang akan dievaluasi pada setiap elemen `input` array. Ekspresi ini harus mengembalikan nilai yang akan digunakan dalam iterasi reduksi berikutnya.

## Contoh (MongoDB Shell)
<a name="reduce-examples"></a>

Contoh berikut menunjukkan bagaimana menggunakan `$reduce` operator untuk menghitung jumlah semua elemen dalam array.

**Buat dokumen sampel**

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

**Contoh kueri**

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

**Keluaran**

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

`$reduce`Operator iterasi atas `items` array, menambahkan setiap elemen ke `initialValue` 0. Hasilnya adalah jumlah semua elemen dalam array.

## Contoh kode
<a name="reduce-code"></a>

Untuk melihat contoh kode untuk menggunakan `$reduce` perintah, pilih tab untuk bahasa yang ingin Anda gunakan:

------
#### [ Node.js ]

Berikut adalah contoh penggunaan `$reduce` operator dalam aplikasi 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 ]

Berikut adalah contoh penggunaan `$reduce` operator dalam aplikasi 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()
```

------