Computer >> Máy Tính >  >> Lập trình >> MongoDB

Làm cách nào để lọc các phần tử mảng trong MongoDB?

Bạn có thể sử dụng toán tử $ setIntersection cùng với khung tổng hợp để lọc các phần tử mảng trong MongoDB. Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.filterArrayElementsDemo.insertOne( { "Scores": [10,45,67,78,90,98,99,92] } );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd2d582b64f4b851c3a13c8")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

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

Điều này sẽ tạo ra kết quả sau -

{
   "_id" : ObjectId("5cd2d582b64f4b851c3a13c8"),
   "Scores" : [
      10,
      45,
      67,
      78,
      90,
      98,
      99,
      92
   ]
}

Sau đây là truy vấn để lọc các phần tử mảng -

> db.filterArrayElementsDemo.aggregate([
...    { $match : {
...          _id: ObjectId("5cd2d582b64f4b851c3a13c8")
...    }},
...    { $project: {
...       Scores: {
...          $setIntersection: ['$Scores', [10,98,99]]
...       }
...    }}
... ]);

Điều này sẽ tạo ra kết quả sau -

{ "_id" : ObjectId("5cd2d582b64f4b851c3a13c8"), "Scores" : [ 10, 98, 99 ] }