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 } }