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

Operator $min agregasi mengembalikan nilai minimum bidang tertentu di seluruh kumpulan dokumen. Operator ini berguna untuk menemukan nilai terendah dalam satu set dokumen.

Parameter

  • expression: Ekspresi untuk mengevaluasi. Ini bisa berupa jalur bidang, variabel, atau ekspresi apa pun yang diselesaikan ke nilai.

Contoh (MongoDB Shell)

Contoh berikut menunjukkan penggunaan $min operator untuk menemukan nilai minimum age bidang di beberapa dokumen.

Buat dokumen sampel

db.users.insertMany([ { name: "John", age: 35 }, { name: "Jane", age: 28 }, { name: "Bob", age: 42 }, { name: "Alice", age: 31 } ]);

Contoh kueri

db.users.aggregate([ { $group: { _id: null, minAge: { $min: "$age" } } }, { $project: { _id: 0, minAge: 1 } } ])

Keluaran

[ { minAge: 28 } ]

Contoh penggunaan operator jendela (MongoDB Shell)

Baru dari versi 8.0.2.

$minOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan nilai minimum 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, $min 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 terendah yang terlihat dari awal partisi melalui dokumen saat ini.

db.stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { lowestSoFar: { $min: "$price", window: { documents: ["unbounded", "current"] } } } } } ]);

Keluaran

[ { "_id": 1, "ticker": "ABC", "hour": 1, "price": 50, "lowestSoFar": 50 }, { "_id": 2, "ticker": "ABC", "hour": 2, "price": 45, "lowestSoFar": 45 }, { "_id": 3, "ticker": "ABC", "hour": 3, "price": 60, "lowestSoFar": 45 }, { "_id": 4, "ticker": "ABC", "hour": 4, "price": 40, "lowestSoFar": 40 }, { "_id": 5, "ticker": "XYZ", "hour": 1, "price": 30, "lowestSoFar": 30 }, { "_id": 6, "ticker": "XYZ", "hour": 2, "price": 35, "lowestSoFar": 30 }, { "_id": 7, "ticker": "XYZ", "hour": 3, "price": 25, "lowestSoFar": 25 } ]

Setiap dokumen ditambah denganlowestSoFar, minimum berjalan di price dalam partisinya hingga dan termasuk dokumen saat ini.

Contoh kode

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

Node.js
const { MongoClient } = require('mongodb'); async function example() { 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'); // Accumulator usage: minimum value across a group const users = db.collection('users'); await users.insertMany([ { name: "John", age: 35 }, { name: "Jane", age: 28 }, { name: "Bob", age: 42 }, { name: "Alice", age: 31 } ]); const accumulatorResult = await users.aggregate([ { $group: { _id: null, minAge: { $min: "$age" } } } ]).toArray(); console.log('Accumulator result:', accumulatorResult); // Window operator usage: running minimum within each partition const stockPrices = db.collection('stockPrices'); await 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 } ]); const windowResult = await stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { lowestSoFar: { $min: "$price", window: { documents: ["unbounded", "current"] } } } } } ]).toArray(); console.log('Window result:', windowResult); 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') db = client['test'] # Accumulator usage: minimum value across a group users = db.users users.insert_many([ { "name": "John", "age": 35 }, { "name": "Jane", "age": 28 }, { "name": "Bob", "age": 42 }, { "name": "Alice", "age": 31 } ]) accumulator_result = list(users.aggregate([ { "$group": { "_id": None, "minAge": { "$min": "$age" } } } ])) print('Accumulator result:', accumulator_result) # Window operator usage: running minimum within each partition stock_prices = db.stockPrices stock_prices.insert_many([ { "_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 } ]) window_result = list(stock_prices.aggregate([ { "$setWindowFields": { "partitionBy": "$ticker", "sortBy": { "hour": 1 }, "output": { "lowestSoFar": { "$min": "$price", "window": { "documents": ["unbounded", "current"] } } } } } ])) print('Window result:', window_result) client.close() example()