Operator $or ใน MongoDB ใช้สำหรับ Query แบบ Logical OR - คือ Match ได้เพียงเงื่อนไขใดเงื่อนไขหนึ่ง เนื้อหานี้สาธิตการค้นหาเอกสารที่ StudentName เป็น "David" หรือ StudentAge เป็น 22 พร้อมใช้ pretty() จัดรูปแบบผลลัพธ์
ตัวอย่างข้อมูลทดสอบ
> db.demo304.insertOne({"StudentName":"Chris","StudentAge":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4ea3ccf8647eb59e562034") }
> db.demo304.insertOne({"StudentName":"David","StudentAge":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4ea3d7f8647eb59e562035") }
> db.demo304.insertOne({"StudentName":"Mike","StudentAge":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4ea3e2f8647eb59e562036") }
> db.demo304.insertOne({"StudentName":"Carol","StudentAge":22});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4ea3eef8647eb59e562037") }
แสดงข้อมูลทั้งหมด
> db.demo304.find();
{
"_id" : ObjectId("5e4ea3ccf8647eb59e562034"),
"StudentName" : "Chris",
"StudentAge" : 23
}
{
"_id" : ObjectId("5e4ea3d7f8647eb59e562035"),
"StudentName" : "David",
"StudentAge" : 22
}
{
"_id" : ObjectId("5e4ea3e2f8647eb59e562036"),
"StudentName" : "Mike",
"StudentAge" : 24
}
{
"_id" : ObjectId("5e4ea3eef8647eb59e562037"),
"StudentName" : "Carol",
"StudentAge" : 22
}
Query ใช้ $or
> db.demo304.find({ $or: [{ "StudentName": "David" }, { "StudentAge":22 } ] }).pretty();
ผลลัพธ์
{
"_id" : ObjectId("5e4ea3d7f8647eb59e562035"),
"StudentName" : "David",
"StudentAge" : 22
}
{
"_id" : ObjectId("5e4ea3eef8647eb59e562037"),
"StudentName" : "Carol",
"StudentAge" : 22
}
คำอธิบาย
$orรับ Array ของ Conditions - Match ถ้าเงื่อนไขใดเงื่อนไขหนึ่ง True- เอกสาร David Match ทั้ง 2 เงื่อนไข (Name=David, Age=22)
- เอกสาร Carol Match เงื่อนไข Age=22
- ใช้
pretty()ท้าย Query เพื่อ Format Output ให้อ่านง่าย - Performance: $or อาจไม่ใช้ Index ได้หากเงื่อนไขแต่ละอันไม่มี Index รองรับ (ควรสร้าง Compound Index หรือใช้ $in แทนถ้าเป็น Field เดียว)