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

Lọc mảng trong subdocument MongoDB

Dùng aggregate kết hợp $unwind mảng trước khi áp dụng $match. Tạo collection:

> db.filterArray.insertOne( { "L": [{ "N":1 }, { "N":2 }, { "N":3 }, { "N":4 }, { "N":5 } ]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6d63f2734e98fc0a434aeb") }

Hiển thị:

> db.filterArray.find().pretty();

Lọc phần tử N > 3:

> db.filterArray.aggregate({ $match:{_id:ObjectId("5c6d63f2734e98fc0a434aeb")}}, { $unwind:'$L'}, {$match:{'L.N':{$gt:3}}}, {$group:{_id:'$_id',subDocument:{$push:'$L.N'}}}).pretty();

Kết quả:

{ "_id" : ObjectId("5c6d63f2734e98fc0a434aeb"), "subDocument" : [ 4, 5 ] }