Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$max
Operator $max agregasi mengembalikan nilai maksimum bidang tertentu di seluruh kumpulan dokumen. Operator ini berguna untuk menemukan nilai tertinggi dalam satu set dokumen.
Parameter
-
expression: Ekspresi yang digunakan untuk menghitung nilai maksimum.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan cara menggunakan $max operator untuk menemukan skor maksimum dalam kumpulan dokumen siswa. T $group ahap mengelompokkan semua dokumen bersama-sama, dan $max operator digunakan untuk menghitung nilai maksimum score bidang di semua dokumen.
Buat dokumen sampel
db.students.insertMany([ { name: "John", score: 85 }, { name: "Jane", score: 92 }, { name: "Bob", score: 78 }, { name: "Alice", score: 90 } ])
Contoh kueri
db.students.aggregate([ { $group: { _id: null, maxScore: { $max: "$score" } } }, { $project: { _id: 0, maxScore: 1 } } ])
Keluaran
[ { maxScore: 92 } ]
Contoh penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
$maxOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan nilai maksimum untuk dokumen di setiap jendela. Anda menentukan operator di bawah output bidang, dan secara opsional menentukan batas jendela dengan window dokumen.
catatan
Ketika digunakan sebagai operator jendela di$setWindowFields, $max dibatasi hingga 100 MB data perantara. Operasi yang melebihi batas ini mengembalikan kesalahan.
Buat dokumen sampel
db.stockPrices.insertMany([ { _id: 1, ticker: "ABC", hour: 1, price: 50 }, { _id: 2, ticker: "ABC", hour: 2, price: 45 }, { _id: 3, ticker: "ABC", hour: 3, price: 60 }, { _id: 4, ticker: "ABC", hour: 4, price: 40 }, { _id: 5, ticker: "XYZ", hour: 1, price: 30 }, { _id: 6, ticker: "XYZ", hour: 2, price: 35 }, { _id: 7, ticker: "XYZ", hour: 3, price: 25 } ]);
Contoh kueri
Contoh berikut mempartisi dokumen berdasarkanticker, mengurutkan setiap partisi berdasarkanhour, dan mengembalikan harga tertinggi yang terlihat dari awal partisi melalui dokumen saat ini.
db.stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { highestSoFar: { $max: "$price", window: { documents: ["unbounded", "current"] } } } } } ]);
Keluaran
[
{ "_id": 1, "ticker": "ABC", "hour": 1, "price": 50, "highestSoFar": 50 },
{ "_id": 2, "ticker": "ABC", "hour": 2, "price": 45, "highestSoFar": 50 },
{ "_id": 3, "ticker": "ABC", "hour": 3, "price": 60, "highestSoFar": 60 },
{ "_id": 4, "ticker": "ABC", "hour": 4, "price": 40, "highestSoFar": 60 },
{ "_id": 5, "ticker": "XYZ", "hour": 1, "price": 30, "highestSoFar": 30 },
{ "_id": 6, "ticker": "XYZ", "hour": 2, "price": 35, "highestSoFar": 35 },
{ "_id": 7, "ticker": "XYZ", "hour": 3, "price": 25, "highestSoFar": 35 }
]
Setiap dokumen ditambah denganhighestSoFar, maksimum berjalan di price dalam partisinya hingga dan termasuk dokumen saat ini.
Contoh kode
Untuk melihat contoh kode untuk menggunakan $max operator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan operator jendela (in$setWindowFields):