Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$push
Operator $push agregasi mengembalikan array semua nilai dari ekspresi tertentu untuk setiap grup. Hal ini biasanya digunakan dalam $group tahap untuk mengakumulasi nilai ke dalam array.
Parameter
-
expression: Ekspresi untuk mengevaluasi untuk setiap dokumen dalam grup.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan penggunaan $push operator untuk mengumpulkan semua nama produk untuk setiap kategori.
Buat dokumen sampel
db.sales.insertMany([ { _id: 1, category: "Electronics", product: "Laptop", amount: 1200 }, { _id: 2, category: "Electronics", product: "Mouse", amount: 25 }, { _id: 3, category: "Furniture", product: "Desk", amount: 350 }, { _id: 4, category: "Furniture", product: "Chair", amount: 150 }, { _id: 5, category: "Electronics", product: "Keyboard", amount: 75 } ]);
Contoh kueri
db.sales.aggregate([ { $group: { _id: "$category", products: { $push: "$product" } } } ]);
Keluaran
[
{ _id: 'Furniture', products: [ 'Desk', 'Chair' ] },
{ _id: 'Electronics', products: [ 'Laptop', 'Mouse', 'Keyboard' ] }
]
Contoh penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
$pushOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan array dari semua nilai ekspresi yang ditentukan untuk dokumen di setiap jendela, dalam urutan urutan. Anda menentukan operator di bawah output bidang, dan secara opsional menentukan batas jendela dengan window dokumen.
catatan
Ketika digunakan sebagai operator jendela di$setWindowFields, $push dibatasi hingga 100 MB data perantara. Operasi yang melebihi batas ini mengembalikan kesalahan.
Buat dokumen sampel
db.purchases.insertMany([ { _id: 1, category: "Electronics", day: 1, product: "Laptop" }, { _id: 2, category: "Electronics", day: 2, product: "Mouse" }, { _id: 3, category: "Electronics", day: 3, product: "Keyboard" }, { _id: 4, category: "Furniture", day: 1, product: "Desk" }, { _id: 5, category: "Furniture", day: 2, product: "Chair" } ]);
Contoh kueri
Contoh berikut mempartisi dokumen berdasarkancategory, mengurutkan setiap partisi berdasarkanday, dan mengembalikan daftar product nilai yang berjalan dari awal partisi melalui dokumen saat ini.
db.purchases.aggregate([ { $setWindowFields: { partitionBy: "$category", sortBy: { day: 1 }, output: { productsSoFar: { $push: "$product", window: { documents: ["unbounded", "current"] } } } } } ]);
Keluaran
[
{ "_id": 1, "category": "Electronics", "day": 1, "product": "Laptop", "productsSoFar": [ "Laptop" ] },
{ "_id": 2, "category": "Electronics", "day": 2, "product": "Mouse", "productsSoFar": [ "Laptop", "Mouse" ] },
{ "_id": 3, "category": "Electronics", "day": 3, "product": "Keyboard", "productsSoFar": [ "Laptop", "Mouse", "Keyboard" ] },
{ "_id": 4, "category": "Furniture", "day": 1, "product": "Desk", "productsSoFar": [ "Desk" ] },
{ "_id": 5, "category": "Furniture", "day": 2, "product": "Chair", "productsSoFar": [ "Desk", "Chair" ] }
]
Setiap dokumen ditambah denganproductsSoFar, array semua product nilai dalam partisinya dari awal hingga dokumen saat ini, dalam urutan urutan.
Contoh kode
Untuk melihat contoh kode untuk menggunakan $push operator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan operator jendela (in$setWindowFields):