การต่ออาร์เรย์ด้วย $concatArrays
เมื่อต้องการรวมอาร์เรย์หลายตัวเข้าด้วยกันใน MongoDB ให้ใช้ operator $concatArrays ภายใน aggregation pipeline
ตัวอย่างข้อมูลต้นฉบับ
> db.demo435.insertOne({ "FirstName": ["Chris"], "LastName": ["Brown"] });
{ "acknowledged": true, "insertedId": ObjectId("5e7719b1bbc41e36cc3cae97") }
> db.demo435.insertOne({ "FirstName": ["David"], "LastName": ["Miller"] });
{ "acknowledged": true, "insertedId": ObjectId("5e7719bdbbc41e36cc3cae98") }
> db.demo435.insertOne({ "FirstName": ["John"], "LastName": ["Doe"] });
{ "acknowledged": true, "insertedId": ObjectId("5e7719c6bbc41e36cc3cae99") }
แสดงข้อมูลทั้งหมด
> db.demo435.find().pretty();
ผลลัพธ์:
{ "_id": ObjectId("5e7719b1bbc41e36cc3cae97"), "FirstName": ["Chris"], "LastName": ["Brown"] }
{ "_id": ObjectId("5e7719bdbbc41e36cc3cae98"), "FirstName": ["David"], "LastName": ["Miller"] }
{ "_id": ObjectId("5e7719c6bbc41e36cc3cae99"), "FirstName": ["John"], "LastName": ["Doe"] }
Query สำหรับต่ออาร์เรย์
> db.demo435.aggregate([
{ $project: { FullName: { $concatArrays: ["$FirstName", "$LastName"] } } }
])
ผลลัพธ์
{ "_id": ObjectId("5e7719b1bbc41e36cc3cae97"), "FullName": ["Chris", "Brown"] }
{ "_id": ObjectId("5e7719bdbbc41e36cc3cae98"), "FullName": ["David", "Miller"] }
{ "_id": ObjectId("5e7719c6bbc41e36cc3cae99"), "FullName": ["John", "Doe"] }
ข้อสังเกต
$concatArraysรองรับการต่ออาร์เรย์หลายตัวพร้อมกัน- ลำดับของอาร์เรย์ในพารามิเตอร์จะกำหนดลำดับผลลัพธ์
- เหมาะสำหรับการรวมฟิลด์อาร์เรย์ที่เกี่ยวข้องกัน เช่น ชื่อ-นามสกุล