Mongodb: วิธีเชื่อมสตริงของสองฟิลด์เข้าด้วยกัน
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเชื่อมสตริงจากสองฟิลด์เข้ากับฟิลด์ใหม่ใน MongoDB:
db.myCollection.aggregate([
{ $project : { newfield: { $concat : [ " $field1 ", " - ", " $field2 " ] } } },
{ $merge : "myCollection" }
])
ตัวอย่างเฉพาะนี้เชื่อมสตริง “field1” และ “field2” เข้ากับฟิลด์ใหม่ชื่อ “newfield” และเพิ่มฟิลด์ใหม่ให้กับคอลเลกชันที่ชื่อ myCollection
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติกับ ทีม เรียกเก็บเงิน โดยมีเอกสารต่อไปนี้:
db.teams.insertOne({team: " Mavs ", conference: " Western ", points: 31})
db.teams.insertOne({team: " Spurs ", conference: " Western ", points: 22})
db.teams.insertOne({team: " Rockets ", conference: " Western ", points: 19})
db.teams.insertOne({team: " Celtics ", conference: " Eastern ", points: 26})
db.teams.insertOne({team: " Cavs ", conference: " Eastern ", points: 33})
db.teams.insertOne({team: " Nets ", conference: " Eastern ", points: 38})
ตัวอย่าง: การต่อสตริงใน MongoDB
เราสามารถใช้โค้ดต่อไปนี้เพื่อเชื่อมสตริงจากฟิลด์ “ทีม” และฟิลด์ “การประชุม” เข้ากับฟิลด์ใหม่ที่เรียกว่า “teamConf” และเพิ่มฟิลด์นี้ลงในคอลเลกชัน ทีม :
db.teams.aggregate([
{ $project : { teamConf: { $concat : [ " $team ", " - ", " $conference " ] } } },
{ $merge : "teams" }
])
นี่คือลักษณะของคอลเลกชันที่อัปเดตในขณะนี้:
{ _id: ObjectId("62013d8c4cb04b772fd7a90c"),
team: 'Mavs',
conference: 'Western',
points: 31,
teamConf: 'Mavs - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90d"),
team: 'Spurs',
conference: 'Western',
points: 22,
teamConf: 'Spurs - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90e"),
team: 'Rockets',
conference: 'Western',
points: 19,
teamConf: 'Rockets - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90f"),
team: 'Celtics',
conference: 'Eastern',
points: 26,
teamConf: 'Celtics - Eastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a910"),
team: 'Cavs',
conference: 'Eastern',
points: 33,
teamConf: 'Cavs - Eastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a911"),
team: 'Nets',
conference: 'Eastern',
points: 38,
teamConf: 'Nets - Eastern' }
โปรดทราบว่าแต่ละเอกสารจะมีฟิลด์ใหม่ชื่อว่า “teamConf” ซึ่งจะมีการต่อข้อมูลระหว่างฟิลด์ “ทีม” และ “การประชุม”
สำหรับตัวอย่างเฉพาะนี้ เราเลือกที่จะเชื่อมสองสายเข้าด้วยกันโดยใช้ยัติภังค์เป็นตัวคั่น
อย่างไรก็ตาม เราสามารถเลือกที่จะเชื่อมสองสายเข้าด้วยกันโดยไม่มีค่าตัวคั่นระหว่างกัน
รหัสต่อไปนี้แสดงวิธีการทำเช่นนี้:
db.teams.aggregate([
{ $project : { teamConf: { $concat : [ " $team ", " $conference " ] } } },
{ $merge : "teams" }
])
คอลเลกชันที่อัปเดตจะมีลักษณะดังนี้:
{ _id: ObjectId("62013d8c4cb04b772fd7a90c"),
team: 'Mavs',
conference: 'Western',
points: 31,
teamConf: 'MavsWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90d"),
team: 'Spurs',
conference: 'Western',
points: 22,
teamConf: 'SpursWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90e"),
team: 'Rockets',
conference: 'Western',
points: 19,
teamConf: 'RocketWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90f"),
team: 'Celtics',
conference: 'Eastern',
points: 26,
teamConf: 'CelticsEastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a910"),
team: 'Cavs',
conference: 'Eastern',
points: 33,
teamConf: 'CavsEastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a911"),
team: 'Nets',
conference: 'Eastern',
points: 38,
teamConf: 'NetsEastern' }
โปรดทราบว่าช่องใหม่ชื่อ “teamConf” มีการต่อข้อมูลช่อง “ทีม” และ “การประชุม” เข้าด้วยกันโดยไม่มีค่าการแยกระหว่างช่องเหล่านั้น
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน $concat ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:
MongoDB: วิธีตรวจสอบว่าฟิลด์มีสตริงหรือไม่
MongoDB: วิธีเพิ่มฟิลด์ใหม่
MongoDB: วิธีลบฟิลด์