ใช้โอเปอเรเตอร์ $regex เพื่อค้นหาเอกสารที่ฟิลด์มีสตริงย่อยที่ต้องการ (case-sensitive โดยค่าเริ่มต้น)
ไวยากรณ์
db.yourCollectionName.findOne({"yourFieldName":{$regex:".*yourValue.*"}});
ตัวอย่างการใช้งาน
สร้างคอลเลกชัน checkFieldContainsStringDemo:
> db.checkFieldContainsStringDemo.insertOne({"Id":1,"Name":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77d762fc4e719b197a12ed") }
> db.checkFieldContainsStringDemo.insertOne({"Id":2,"Name":"Johnson"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77d76bfc4e719b197a12ee") }
> db.checkFieldContainsStringDemo.insertOne({"Id":3,"Name":"Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77d774fc4e719b197a12ef") }
> db.checkFieldContainsStringDemo.insertOne({"Id":4,"Name":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77d77cfc4e719b197a12f0") }
> db.checkFieldContainsStringDemo.insertOne({"Id":5,"Name":"Sam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77d784fc4e719b197a12f1") }
> db.checkFieldContainsStringDemo.insertOne({"Id":6,"Name":"Larry"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77d78cfc4e719b197a12f2") }
แสดงข้อมูลทั้งหมด:
> db.checkFieldContainsStringDemo.find();
{"_id" : ObjectId("5c77d762fc4e719b197a12ed"), "Id" : 1, "Name" : "John" }
{"_id" : ObjectId("5c77d76bfc4e719b197a12ee"), "Id" : 2, "Name" : "Johnson" }
{"_id" : ObjectId("5c77d774fc4e719b197a12ef"), "Id" : 3, "Name" : "Carol" }
{"_id" : ObjectId("5c77d77cfc4e719b197a12f0"), "Id" : 4, "Name" : "Mike" }
{"_id" : ObjectId("5c77d784fc4e719b197a12f1"), "Id" : 5, "Name" : "Sam" }
{"_id" : ObjectId("5c77d78cfc4e719b197a12f2"), "Id" : 6, "Name" : "Larry" }
ค้นหาชื่อที่มีสตริง "Johnson":
> db.checkFieldContainsStringDemo.findOne({"Name":{$regex:".*Johnson.*"}});
{"_id" : ObjectId("5c77d76bfc4e719b197a12ee"), "Id" : 2, "Name" : "Johnson" }
หมายเหตุ: สำหรับการค้นหาแบบ case-insensitive ให้เพิ่มตัวเลือก i เช่น {$regex: ".*johnson.*", $options: "i"}