ใช้โอเปอเรเตอร์ $where ร่วมกับ JavaScript .length เพื่อกรองเอกสารที่ความยาวสตริงเกินค่าที่กำหนด
ไวยากรณ์
db.yourCollectionName.find({$where:'this.yourStringFieldName.length > yourIntegerValue'}).pretty();
ตัวอย่างการใช้งาน
สร้างคอลเลกชัน stringFieldLengthDemo:
> db.stringFieldLengthDemo.insertOne({"UserId":1,"UserName":"Adam Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bb4b2386c62d05142a78") }
> db.stringFieldLengthDemo.insertOne({"UserId":2,"UserName":"Carol Taylor"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bb562386c62d05142a79") }
> db.stringFieldLengthDemo.insertOne({"UserId":3,"UserName":"James Brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bb5b2386c62d05142a7a") }
> db.stringFieldLengthDemo.insertOne({"UserId":4,"UserName":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bb662386c62d05142a7b") }
> db.stringFieldLengthDemo.insertOne({"UserId":5,"UserName":"David Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bb892386c62d05142a7c") }
> db.stringFieldLengthDemo.insertOne({"UserId":6,"UserName":"John Williams"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bbb02386c62d05142a7d") }
> db.stringFieldLengthDemo.insertOne({"UserId":7,"UserName":"Chris Evans"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c77bbd32386c62d05142a7e") }
แสดงข้อมูลทั้งหมด:
> db.stringFieldLengthDemo.find().pretty();
{"_id" : ObjectId("5c77bb4b2386c62d05142a78"), "UserId" : 1, "UserName" : "Adam Smith" }
{"_id" : ObjectId("5c77bb562386c62d05142a79"), "UserId" : 2, "UserName" : "Carol Taylor" }
{"_id" : ObjectId("5c77bb5b2386c62d05142a7a"), "UserId" : 3, "UserName" : "James Brown" }
{"_id" : ObjectId("5c77bb662386c62d05142a7b"), "UserId" : 4, "UserName" : "John Smith" }
{"_id" : ObjectId("5c77bb892386c62d05142a7c"), "UserId" : 5, "UserName" : "David Miller" }
{"_id" : ObjectId("5c77bbb02386c62d05142a7d"), "UserId" : 6, "UserName" : "John Williams" }
{"_id" : ObjectId("5c77bbd32386c62d05142a7e"), "UserId" : 7, "UserName" : "Chris Evans" }
ค้นหาชื่อที่มีความยาวมากกว่า 11 ตัวอักษร:
> db.stringFieldLengthDemo.find({$where:'this.UserName.length >11'}).pretty();
{"_id" : ObjectId("5c77bb562386c62d05142a79"), "UserId" : 2, "UserName" : "Carol Taylor" }
{"_id" : ObjectId("5c77bb892386c62d05142a7c"), "UserId" : 5, "UserName" : "David Miller" }
{"_id" : ObjectId("5c77bbb02386c62d05142a7d"), "UserId" : 6, "UserName" : "John Williams" }
คำเตือน: $where ทำงานช้ากว่าออเปอเรเตอร์มาตรฐาน ใช้เฉพาะเมื่อจำเป็น