$reduce - Amazon DocumentDB

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

$reduce

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)

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

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

Contoh kode

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