Mongodb: วิธีใช้ฟังก์ชัน $susbtr


คุณสามารถใช้ฟังก์ชัน $substr ใน MongoDB เพื่อแยกสตริงย่อยออกจากสตริงได้

ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

 db.myCollection.aggregate([
  { $project : {substring: { $substr : [ " $fullstring ", 0, 4 ] }}}
])

ตัวอย่างนี้จะแยกอักขระทั้งสี่ตัวออกจากฟิลด์ชื่อ “fullString” โดยเริ่มต้นที่ตำแหน่ง 0

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติกับ การขาย คอลเลกชันโดยมีเอกสารต่อไปนี้:

 db.sales.insertOne({yearMonth: 201702, amount: 40 })
db.sales.insertOne({yearMonth: 201802, amount: 32 })
db.sales.insertOne({yearMonth: 201806, amount: 19 })
db.sales.insertOne({yearMonth: 201910, amount: 29 })
db.sales.insertOne({yearMonth: 201907, amount: 35 })

ตัวอย่าง: วิธีใช้ฟังก์ชัน $susbtr ใน MongoDB

เราสามารถใช้โค้ดต่อไปนี้เพื่อแยกอักขระสี่ตัวแรกจากฟิลด์ “yearMonth” และแสดงไว้ในฟิลด์ใหม่ที่เรียกว่า “year”:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}}
])

รหัสนี้ให้ผลลัพธ์ดังต่อไปนี้:

 { _id: ObjectId("620145544cb04b772fd7a929"), year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"), year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"), year: '2019' }

โปรดทราบว่าอักขระสี่ตัวแรกของฟิลด์ “เดือนปี” ของแต่ละเอกสารจะแสดงในช่องใหม่ที่มีป้ายกำกับว่า “ปี”

สิ่งสำคัญคือต้องทราบว่าโค้ดนี้ แสดง เฉพาะสตริงย่อยเท่านั้น

หากต้องการเพิ่มฟิลด์ใหม่ให้กับคอลเลกชันที่มีสตริงย่อยนี้ เราจำเป็นต้องใช้ฟังก์ชัน $merge ดังนี้:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}},
  { $merge : "sales" }
])

นี่คือลักษณะของคอลเลกชันที่อัปเดตในขณะนี้:

 { _id: ObjectId("620145544cb04b772fd7a929"),
  yearMonth: 201702,
  amount: 40,
  year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"),
  yearMonth: 201802,
  amount: 32,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"),
  yearMonth: 201806,
  amount: 19,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"),
  yearMonth: 201910,
  amount: 29,
  year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"),
  yearMonth: 201907,
  amount: 35,
  year: '2019' }

โปรดทราบว่าช่องใหม่ชื่อ “ปี” ได้ถูกเพิ่มลงในแต่ละเอกสารในคอลเลกชันแล้ว และจะแสดงอักขระสี่ตัวแรกของช่อง “ปีเดือน”

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน $substr ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:

MongoDB: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่
MongoDB: วิธีเชื่อมสตริงของสองฟิลด์เข้าด้วยกัน
MongoDB: วิธีแทนที่สตริง

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

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