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

Cách đẩy (push) mảng trong MongoDB với $push và Aggregation

Trong MongoDB, $push có 2 ngữ cảnh sử dụng chính: (1) Cập nhật: thêm phần tử vào mảng của tài liệu hiện có; (2) Aggregation: gom nhóm nhiều tài liệu thành một mảng. Bài này tập trung vào **Aggregation $push** để biến nhiều dòng thành một mảng.

1. Tạo bộ sưu tập và chèn dữ liệu

> db.demo399.insertOne({ Name: "Chris", Age: 21 });
> db.demo399.insertOne({ Name: "David", Age: 22 });
> db.demo399.insertOne({ Name: "Chris", Age: 21 });
> db.demo399.insertOne({ Name: "Bob", Age: 23 });
> db.demo399.insertOne({ Name: "David", Age: 22 });

2. Xem dữ liệu (5 tài liệu riêng lẻ)

> db.demo399.find();

Kết quả: 5 tài liệu riêng biệt.

3. Aggregation: Gom tất cả thành một mảng duy nhất

> db.demo399.aggregate([
    {
        $group: {
            _id: null,                    // Gom tất cả vào một group
            array: { $push: { Name: "$Name", Age: "$Age" } } // Đẩy object vào mảng
        }
    }
]);

4. Kết quả

{ "_id": null, "array": [
    { "Name": "Chris", "Age": 21 },
    { "Name": "David", "Age": 22 },
    { "Name": "Chris", "Age": 21 },
    { "Name": "Bob", "Age": 23 },
    { "Name": "David", "Age": 22 }
] }

Giải thích:

  • _id: null: Gom toàn bộ collection thành 1 group.
  • $push: Tạo mảng, mỗi phần tử là object {Name, Age} từ từng tài liệu.

Bổ sung: $push trong Update (thêm phần tử vào mảng hiện có):

db.demo399.updateOne(
    { Name: "Chris" },
    { $push: { Skills: "MongoDB" } }
);

Thêm "MongoDB" vào mảng Skills của tài liệu có Name="Chris".