Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$Maks
Baru dari versi 8.0.1.
$maxNOperator di Amazon DocumentDB mengembalikan N nilai terbesar. Ketika digunakan sebagai akumulator dalam $group tahap, ia mengembalikan array dari N nilai maksimum di setiap grup. Ketika digunakan sebagai operator ekspresi array, ia mengembalikan N elemen maksimum dari sebuah array.
Parameter
-
input: Ekspresi yang menyelesaikan ke array atau bidang dari mana untuk mengembalikannnilai maksimum. -
n: Ekspresi yang diselesaikan ke bilangan bulat positif yang menentukan berapa banyak nilai maksimum yang akan dikembalikan.
Perilaku
Perilaku operator ekspresi array
-
Anda tidak dapat menentukan nilai
nkurang dari1. -
$maxNmenyaringnullnilai yang ditemukan dalaminputarray. -
Jika yang
nditentukan lebih besar dari atau sama dengan jumlah elemen dalaminputarray,$maxNmengembalikan semua elemen dalaminputarray. -
Jika
inputdiselesaikan ke nilai non-array, kesalahan operasi agregasi. -
Jika
inputberisi elemen numerik dan string, elemen string diurutkan sebelum elemen numerik sesuai dengan urutan perbandingan BSON.
Perilaku akumulator
-
Ketika digunakan sebagai akumulator,
nharus berupa ekspresi integral positif yang merupakan konstanta atau tergantung pada_idnilai untuk$group. -
$maxNmenyaring nilai nol dan hilang. -
Jika grup berisi lebih sedikit dari
nelemen,$maxNmengembalikan semua elemen dalam grup. -
$maxNmembandingkan data input mengikuti urutan perbandingan BSON untuk menentukan jenis keluaran yang sesuai. Ketika data input berisi beberapa tipe data, jenis$maxNkeluaran adalah yang tertinggi dalam urutan perbandingan.
Pemesanan keluaran
$maxNmengembalikan nilai tanpa urutan tertentu. Jika menjamin urutan pengurutan tertentu adalah persyaratan, gunakan sebagai $topN gantinya, atau bungkus hasilnya dengan$sortArray.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan cara menggunakan $maxN akumulator untuk mengambil dua skor tertinggi untuk setiap subjek.
Buat dokumen sampel
db.scores.insertMany([ { subject: "math", score: 85 }, { subject: "math", score: 72 }, { subject: "math", score: 93 }, { subject: "math", score: 68 }, { subject: "science", score: 90 }, { subject: "science", score: 78 }, { subject: "science", score: 65 }, { subject: "science", score: 88 } ]);
Contoh kueri
db.scores.aggregate([ { $group: { _id: "$subject", highestTwo: { $maxN: { input: "$score", n: 2 } } } } ]);
Keluaran
[
{ "_id": "math", "highestTwo": [85, 93] },
{ "_id": "science", "highestTwo": [88, 90] }
]
Contoh penggunaan ekspresi (MongoDB Shell)
$maxNOperator juga dapat digunakan sebagai ekspresi dalam $project tahap untuk mengembalikan N elemen terbesar dari bidang array.
Buat dokumen sampel
db.readings.insertMany([ { _id: 1, sensor: "A", values: [45, 12, 78, 3, 56] }, { _id: 2, sensor: "B", values: [90, 23, 67, 11, 44] } ]);
Contoh kueri
db.readings.aggregate([ { $project: { highestThree: { $maxN: { input: "$values", n: 3 } } }} ]);
Keluaran
[
{ "_id": 1, "highestThree": [45, 56, 78] },
{ "_id": 2, "highestThree": [44, 90, 67] }
]
Contoh kode
Untuk melihat contoh kode untuk menggunakan $maxN operator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan ekspresi (in$project):