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: วิธีลบฟิลด์

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

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