คุณสามารถใช้ตัวดำเนินการ $setIntersection ร่วมกับเฟรมเวิร์กรวมเพื่อกรององค์ประกอบอาร์เรย์ใน MongoDB ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -
> db.filterArrayElementsDemo.insertOne( { "Scores": [10,45,67,78,90,98,99,92] } ); { "acknowledged" : true, "insertedId" : ObjectId("5cd2d582b64f4b851c3a13c8") }
ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -
> db.filterArrayElementsDemo.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5cd2d582b64f4b851c3a13c8"), "Scores" : [ 10, 45, 67, 78, 90, 98, 99, 92 ] }
ต่อไปนี้เป็นแบบสอบถามเพื่อกรององค์ประกอบอาร์เรย์ -
> db.filterArrayElementsDemo.aggregate([ ... { $match : { ... _id: ObjectId("5cd2d582b64f4b851c3a13c8") ... }}, ... { $project: { ... Scores: { ... $setIntersection: ['$Scores', [10,98,99]] ... } ... }} ... ]);
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5cd2d582b64f4b851c3a13c8"), "Scores" : [ 10, 98, 99 ] }