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

MongoDB aggregation lấy tài liệu với giá trị trường cụ thể

Sử dụng aggregate() để lọc tài liệu con trong mảng theo giá trị trường cụ thể. Ví dụ: lấy các phần tử trong mảng details có Age = 21.

Tạo collection với mảng details:

> db.demo685.insertOne(
...     {
...         "details":
...         [
...             { Name:"Chris", Age:21 },
...             { Name:"David", Age:23 },
...             { Name:"Bob", Age:21 }
...         ]
...     }
... );
{ "acknowledged" : true, "insertedId" : ObjectId("5ea54f6fa7e81adc6a0b395b") }

Hiển thị tài liệu gốc:

> db.demo685.find();

Pipeline aggregate: $unwind tách mảng details, $match lọc details.Age = 21, $project ẩn _id:

> db.demo685.aggregate([ { $unwind: "$details" }, { $match: { "details.Age": 21 } }, { $project: {_id: 0}} ]).pretty();

Kết quả (2 phần tử Age 21):

{ "details" : { "Name" : "Chris", "Age" : 21 } }
{ "details" : { "Name" : "Bob", "Age" : 21 } }