Mongodb: วิธีค้นหาความยาวของสตริง
คุณสามารถใช้วิธีการต่อไปนี้เพื่อค้นหาความยาวของสตริงใน MongoDB และใช้ความยาวของสตริงนั้นในการสืบค้น:
วิธีที่ 1: ค้นหาความยาวของโซ่
db.myCollection.aggregate([ { $project : { "name": 1, "length": { $strLenCP : " $name " } }} ])
วิธีที่ 2: ค้นหาเอกสารที่มีสายอักขระมากกว่าความยาวที่กำหนด
db.myCollection.find({ "name": { $exists : true }, $expr : { $gt : [ { $strLenCP : " $name " }, 14 ] } })
ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละวิธีกับ ทีม เรียกเก็บเงิน พร้อมเอกสารต่อไปนี้:
db.teams.insertOne({name: " Dallas Mavs ", points: 31}) db.teams.insertOne({name: " San Antonio Spurs ", points: 22}) db.teams.insertOne({name: " Houston Rockets ", points: 19}) db.teams.insertOne({name: " Boston Celtics ", points: 26}) db.teams.insertOne({name: " Cleveland Cavs ", points: 33})
ตัวอย่างที่ 1: การค้นหาความยาวของสตริง
เราสามารถใช้รหัสต่อไปนี้เพื่อคำนวณความยาวของสตริงในช่อง “ชื่อ” ของแต่ละเอกสาร:
db.teams.aggregate([ { $project : { "name": 1, "length": { $strLenCP : " $name " } }} ])
รหัสนี้ส่งคืนผลลัพธ์ต่อไปนี้:
{ _id: ObjectId("62014eff4cb04b772fd7a93d"), name: 'Dallas Mavs', length: 11 } { _id: ObjectId("62014eff4cb04b772fd7a93e"), name: 'San Antonio Spurs', length: 17 } { _id: ObjectId("62014eff4cb04b772fd7a93f"), name: 'Houston Rockets', length: 15 } { _id: ObjectId("62014eff4cb04b772fd7a940"), name: 'Boston Celtics', length: 14 } { _id: ObjectId("62014eff4cb04b772fd7a941"), name: 'Cleveland Cavs', length: 14 }
ค่าความยาวจะแสดงความยาวของสตริงในคอลัมน์ “ชื่อ”
ตัวอย่างเช่น:
- ความยาวของโซ่ “Dallas Mavs” คือ 11 .
- ความยาวของโซ่ ‘ซาน อันโตนิโอ สเปอร์ส’ คือ 17
และอื่นๆ
โปรดทราบว่าความยาวจะนับช่องว่างด้วย
ตัวอย่างที่ 2: ค้นหาเอกสารที่มีสตริงยาวเกินความยาวที่กำหนด
เราสามารถใช้โค้ดต่อไปนี้เพื่อส่งคืนเฉพาะเอกสารที่มีสตริงในคอลัมน์ “ชื่อ” มากกว่า 14 :
db.teams.find({ "name": { $exists : true }, $expr : { $gt : [ { $strLenCP : " $name " }, 14 ] } })
แบบสอบถามนี้ส่งกลับผลลัพธ์ต่อไปนี้:
{ _id: ObjectId("62014eff4cb04b772fd7a93e"), name: 'San Antonio Spurs', points: 22 } { _id: ObjectId("62014eff4cb04b772fd7a93f"), name: 'Houston Rockets', points: 19 }
โปรดทราบว่ามีเพียงสองทีมที่ส่งคืนคือทีมที่ฟิลด์ “ชื่อ” มากกว่า 14
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน $strLenCP ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:
MongoDB: วิธีแยกสตริงออกเป็นอาร์เรย์ของสตริงย่อย
MongoDB: วิธีเชื่อมสตริงของสองฟิลด์เข้าด้วยกัน
MongoDB: วิธีแทนที่สตริงใน