Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การใช้ $or Operator ใน MongoDB ค้นหาข้อมูลแบบ OR Condition

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 เดียว)