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