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

Truy vấn MongoDB gộp nhóm bản ghi và hiển thị giá trị cụ thể với dot notation

Gộp nhóm bản ghi và truy xuất giá trị với dot notation

Ví dụ minh họa cách sử dụng $group với dot notation để gộp các tên từ mảng lồng nhau.

1. Tạo collection với mảng lồng

> db.demo430.insertOne({
    details: [
        { "Name": "Chris" },
        { "Name": "David" },
        { "Name": "Adam" },
        { "Name": "Bob" }
    ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e7702ddbbc41e36cc3cae88") }

2. Xem dữ liệu

> db.demo430.find();
{ "_id": ObjectId("5e7702ddbbc41e36cc3cae88"), "details": [{ "Name": "Chris" }, { "Name": "David" }, { "Name": "Adam" }, { "Name": "Bob" }] }

3. Truy vấn gộp nhóm

> db.demo430.aggregate([
    { "$group": { "_id": { "Name": "$details.Name" } } }
]);

4. Kết quả

{ "_id": { "Name": ["Chris", "David", "Adam", "Bob"] } }

Giải thích

  • $details.Name sử dụng dot notation để truy xuất tất cả giá trị Name từ mảng details
  • MongoDB tự động "flatten" mảng thành một mảng phẳng các giá trị
  • Kết quả là một tài liệu duy nhất chứa mảng tất cả tên

Mở rộng: Nếu cần đếm số lần xuất hiện, thêm count: { $sum: 1 } vào $group.