Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$first
Baru dari versi 5.0.
Tidak didukung oleh cluster Elastic.
$firstOperator di Amazon DocumentDB mengembalikan dokumen pertama dari kumpulan dokumen yang dikelompokkan. Hal ini biasanya digunakan dalam pipeline agregasi untuk mengambil dokumen pertama yang cocok dengan kondisi tertentu.
Parameter
-
expression: Ekspresi untuk dikembalikan sebagai nilai pertama di setiap grup.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan penggunaan $first operator untuk mengambil nilai item pertama yang ditemui untuk setiap kategori selama agregasi.
Catatan: $first mengembalikan dokumen pertama berdasarkan urutan dokumen saat ini dalam pipeline. Untuk memastikan pesanan tertentu (misalnya, berdasarkan tanggal, harga, dll.), T $sort ahap harus digunakan sebelum pang $group gung.
Buat dokumen sampel
db.products.insertMany([ { _id: 1, item: "abc", price: 10, category: "food" }, { _id: 2, item: "jkl", price: 20, category: "food" }, { _id: 3, item: "xyz", price: 5, category: "toy" }, { _id: 4, item: "abc", price: 5, category: "toy" } ]);
Contoh kueri
db.products.aggregate([ { $group: { _id: "$category", firstItem: { $first: "$item" } } } ]);
Keluaran
[
{ "_id" : "food", "firstItem" : "abc" },
{ "_id" : "toy", "firstItem" : "xyz" }
]
Contoh penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
$firstOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan nilai expression dari dokumen pertama 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, $first 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 pertama (paling awal) yang dicatat di setiap partisi.
db.stockPrices.aggregate([ { $setWindowFields: { partitionBy: "$ticker", sortBy: { hour: 1 }, output: { firstPrice: { $first: "$price", window: { documents: ["unbounded", "current"] } } } } } ]);
Keluaran
[
{ "_id": 1, "ticker": "ABC", "hour": 1, "price": 50, "firstPrice": 50 },
{ "_id": 2, "ticker": "ABC", "hour": 2, "price": 45, "firstPrice": 50 },
{ "_id": 3, "ticker": "ABC", "hour": 3, "price": 60, "firstPrice": 50 },
{ "_id": 4, "ticker": "ABC", "hour": 4, "price": 40, "firstPrice": 50 },
{ "_id": 5, "ticker": "XYZ", "hour": 1, "price": 30, "firstPrice": 30 },
{ "_id": 6, "ticker": "XYZ", "hour": 2, "price": 35, "firstPrice": 30 },
{ "_id": 7, "ticker": "XYZ", "hour": 3, "price": 25, "firstPrice": 30 }
]
Setiap dokumen ditambah denganfirstPrice, harga dari dokumen pertama di jendelanya (yang paling awal hour di partisi).
Contoh kode
Untuk melihat contoh kode untuk menggunakan $first operator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan operator jendela (in$setWindowFields):