Thêm phần tử vào mảng với $push trong MongoDB
Toán tử $push dùng để thêm phần tử vào cuối mảng. Đây là cách tiêu chuẩn và hiệu quả nhất.
1. Tạo collection với mảng
> db.demo445.insertOne({ "ListOfFriends": ["Robert", "Mike", "Sam", "Carol", "David", "Mike"] });
{ "acknowledged": true, "insertedId": ObjectId("5e78f099bbc41e36cc3caec2") }
2. Xem dữ liệu
> db.demo445.find().pretty();
{
"_id": ObjectId("5e78f099bbc41e36cc3caec2"),
"ListOfFriends": ["Robert", "Mike", "Sam", "Carol", "David", "Mike"]
}
3. Thêm "Chris Brown" vào mảng
> db.demo445.update(
{ _id: ObjectId("5e78f099bbc41e36cc3caec2") },
{ $push: { ListOfFriends: "Chris Brown" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
4. Kết quả
> db.demo445.find().pretty();
{
"_id": ObjectId("5e78f099bbc41e36cc3caec2"),
"ListOfFriends": ["Robert", "Mike", "Sam", "Carol", "David", "Mike", "Chris Brown"]
}
Các biến thể hữu ích của $push
| Toán tử | Mô tả |
|---|---|
| $push | Thêm vào cuối mảng |
| $push + $each | Thêm nhiều phần tử cùng lúc |
| $push + $position | Chèn tại vị trí cụ thể (0 = đầu) |
| $push + $slice | Giới hạn kích thước mảng sau push |
| $push + $sort | Sắp xếp mảng sau khi push |
Ví dụ $push nâng cao
// Thêm nhiều, giới hạn 5 phần tử, sắp xếp
db.collection.updateOne(
{ _id: id },
{
$push: {
scores: {
$each: [90, 85, 95],
$sort: -1,
$slice: 5
}
}
}
);
Lưu ý: MongoDB 4.2+ khuyến nghị dùng updateOne() / updateMany() thay cho update().