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