View a markdown version of this page

$min - Amazon DocumentDB

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

$min

Baru dari versi 8.0.1.

$minNOperator di Amazon DocumentDB mengembalikan N nilai terkecil. Ketika digunakan sebagai akumulator dalam $group tahap, ia mengembalikan array dari N nilai minimum di setiap grup. Ketika digunakan sebagai operator ekspresi array, ia mengembalikan N elemen minimum dari sebuah array.

Parameter

  • input: Ekspresi yang menyelesaikan ke array atau bidang dari mana untuk mengembalikan n nilai minimum.

  • n: Ekspresi yang diselesaikan ke bilangan bulat positif yang menentukan berapa banyak nilai minimum yang akan dikembalikan.

Perilaku

Perilaku operator ekspresi array

  • Anda tidak dapat menentukan nilai n kurang dari1.

  • $minNmenyaring null nilai yang ditemukan dalam input array.

  • Jika yang n ditentukan lebih besar dari atau sama dengan jumlah elemen dalam input array, $minN mengembalikan semua elemen dalam input array.

  • Jika input diselesaikan ke nilai non-array, kesalahan operasi agregasi.

  • Jika input berisi elemen numerik dan string, elemen numerik diurutkan sebelum elemen string sesuai dengan urutan perbandingan BSON.

Perilaku akumulator

  • Ketika digunakan sebagai akumulator, n harus berupa ekspresi integral positif yang merupakan konstanta atau tergantung pada _id nilai untuk$group.

  • $minNmenyaring nilai nol dan hilang.

  • Jika grup berisi lebih sedikit dari n elemen, $minN mengembalikan semua elemen dalam grup.

  • $minNmembandingkan data input mengikuti urutan perbandingan BSON untuk menentukan jenis keluaran yang sesuai. Ketika data input berisi beberapa tipe data, jenis $minN keluaran adalah yang terendah dalam urutan perbandingan.

Pemesanan keluaran

$minNmengembalikan nilai tanpa urutan tertentu. Jika menjamin urutan pengurutan tertentu adalah persyaratan, gunakan sebagai $bottomN gantinya, atau bungkus hasilnya dengan$sortArray.

Contoh (MongoDB Shell)

Contoh berikut menunjukkan cara menggunakan $minN akumulator untuk mengambil dua skor terendah 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", lowestTwo: { $minN: { input: "$score", n: 2 } } } } ]);

Keluaran

[ { "_id": "math", "lowestTwo": [72, 68] }, { "_id": "science", "lowestTwo": [78, 65] } ]

Contoh penggunaan ekspresi (MongoDB Shell)

$minNOperator juga dapat digunakan sebagai ekspresi dalam $project tahap untuk mengembalikan N elemen terkecil 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: { lowestThree: { $minN: { input: "$values", n: 3 } } }} ]);

Keluaran

[ { "_id": 1, "lowestThree": [45, 12, 3] }, { "_id": 2, "lowestThree": [44, 23, 11] } ]

Contoh kode

Untuk melihat contoh kode untuk menggunakan $minN operator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan ekspresi (in$project):

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = new MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); try { await client.connect(); const db = client.db('test'); // Accumulator usage: N smallest values per group const scores = db.collection('scores'); const accumulatorResult = await scores.aggregate([ { $group: { _id: "$subject", lowestTwo: { $minN: { input: "$score", n: 2 } } } } ]).toArray(); console.log('Accumulator result:', accumulatorResult); // Expression usage: N smallest elements from an array field const readings = db.collection('readings'); const expressionResult = await readings.aggregate([ { $project: { lowestThree: { $minN: { input: "$values", n: 3 } } } } ]).toArray(); console.log('Expression result:', expressionResult); } finally { await client.close(); } } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') try: db = client['test'] # Accumulator usage: N smallest values per group scores = db['scores'] accumulator_result = list(scores.aggregate([ { '$group': { '_id': '$subject', 'lowestTwo': { '$minN': { 'input': '$score', 'n': 2 } } } } ])) print('Accumulator result:', accumulator_result) # Expression usage: N smallest elements from an array field readings = db['readings'] expression_result = list(readings.aggregate([ { '$project': { 'lowestThree': { '$minN': { 'input': '$values', 'n': 3 } } } } ])) print('Expression result:', expression_result) finally: client.close() example()