

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

# $min
<a name="minN"></a>

Baru dari versi 8.0.1.

`$minN`Operator 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
<a name="minN-behavior"></a>

**Perilaku operator ekspresi array **
+ Anda tidak dapat menentukan nilai `n` kurang dari`1`.
+ `$minN`menyaring `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`.
+ `$minN`menyaring nilai nol dan hilang.
+ Jika grup berisi lebih sedikit dari `n` elemen, `$minN` mengembalikan semua elemen dalam grup.
+ `$minN`membandingkan 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 **

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

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

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)
<a name="minN-expression-examples"></a>

`$minN`Operator 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
<a name="minN-code"></a>

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

------