ใช้ Operator $in เพื่อค้นหาเอกสารที่ฟิลด์อาร์เรย์มีค่าตรงกับ อย่างน้อย 1 ค่า จากรายการที่ระบุ
สร้างคอลเลกชันและข้อมูลตัวอย่าง
> db.atleastOneMatchDemo.insertOne({"StudentFavouriteSubject":["MySQL","MongoDB"]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2db5db64f4b851c3a13ce") }
> db.atleastOneMatchDemo.insertOne({"StudentFavouriteSubject":["Java","C","MongoDB"]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2db71b64f4b851c3a13cf") }
> db.atleastOneMatchDemo.insertOne({"StudentFavouriteSubject":["Python","C++","SQL Server"]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2db87b64f4b851c3a13d0") }
> db.atleastOneMatchDemo.insertOne({"StudentFavouriteSubject":["Ruby","Javascript","C#","MySQL"]});
{ "acknowledged": true, "insertedId": ObjectId("5cd2dba9b64f4b851c3a13d1") }
แสดงข้อมูลทั้งหมด
> db.atleastOneMatchDemo.find().pretty();
ผลลัพธ์:
{
"_id": ObjectId("5cd2db5db64f4b851c3a13ce"),
"StudentFavouriteSubject": ["MySQL", "MongoDB"]
}
{
"_id": ObjectId("5cd2db71b64f4b851c3a13cf"),
"StudentFavouriteSubject": ["Java", "C", "MongoDB"]
}
{
"_id": ObjectId("5cd2db87b64f4b851c3a13d0"),
"StudentFavouriteSubject": ["Python", "C++", "SQL Server"]
}
{
"_id": ObjectId("5cd2dba9b64f4b851c3a13d1"),
"StudentFavouriteSubject": ["Ruby", "Javascript", "C#", "MySQL"]
}
ค้นหาเอกสารที่มีวิชา MongoDB หรือ MySQL อย่างน้อย 1 วิชา
> db.atleastOneMatchDemo.find({"StudentFavouriteSubject": {"$in": ["MongoDB", "MySQL"]}}).pretty();
ผลลัพธ์ (3 จาก 4 เอกสาร):
{
"_id": ObjectId("5cd2db5db64f4b851c3a13ce"),
"StudentFavouriteSubject": ["MySQL", "MongoDB"]
}
{
"_id": ObjectId("5cd2db71b64f4b851c3a13cf"),
"StudentFavouriteSubject": ["Java", "C", "MongoDB"]
}
{
"_id": ObjectId("5cd2dba9b64f4b851c3a13d1"),
"StudentFavouriteSubject": ["Ruby", "Javascript", "C#", "MySQL"]
}
เอกสารของ Python/C++/SQL Server ไม่ตรงเงื่อนไข จึงไม่ปรากฏ
รายละเอียด $in
- Syntax:
{field: {$in: [value1, value2, ...]}} - ทำงานกับทั้งฟิลด์แบบ Single Value และ Array
- หากฟิลด์เป็น Array: ตรวจสอบว่า element ใด element หนึ่งใน Array ตรงกับค่าในรายการ $in
- เทียบเท่า SQL:
WHERE field IN (val1, val2, ...)
Operator ที่เกี่ยวข้อง
$nin(Not In): ค้นหาที่ ไม่มี ค่าใดค่าหนึ่งในรายการ$all: ต้องมี ทุกค่า ในรายการ (AND logic)$elemMatch: สำหรับ Array of Objects ต้องการจับคู่หลายเงื่อนไขใน Object เดียวกัน