Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Không thể push vào mảng MongoDB? Cách dùng $push đúng

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ả
$pushThêm vào cuối mảng
$push + $eachThêm nhiều phần tử cùng lúc
$push + $positionChèn tại vị trí cụ thể (0 = đầu)
$push + $sliceGiới hạn kích thước mảng sau push
$push + $sortSắ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().