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: วิธีแทนที่สตริงใน

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *