Trong MongoDB, $concat
toán tử đường ống tổng hợp nối hai hoặc nhiều chuỗi và trả về chuỗi đã nối.
Ví dụ
Giả sử chúng ta có một bộ sưu tập được gọi là employees
với tài liệu sau:
{ "_id" : 1, "firstName" : "Sandy", "surname" : "Beach", "position" : "Lifesaver", "salary" : 55000 }
Chúng ta có thể sử dụng $concat
toán tử để nối họ và tên:
db.employees.aggregate(
[
{ $project: {
_id: 0,
name: { $concat: [ "$firstName", "$surname" ] }
}
}
]
)
Kết quả:
{ "name" : "SandyBeach" }
Chuỗi khác
Ví dụ trước nối hai chuỗi, nhưng chúng ta có thể nối nhiều chuỗi hơn nếu cần.
Ví dụ:chúng ta có thể chèn một khoảng trắng giữa tên và họ.
Ví dụ:
db.employees.aggregate(
[
{ $project: {
_id: 0,
name: { $concat: [ "$firstName", " ", "$surname" ] }
}
}
]
)
Kết quả:
{ "name" : "Sandy Beach" }
Chúng tôi cũng có thể bao gồm nhiều trường hơn trong nối của chúng tôi.
Ví dụ:
db.employees.aggregate(
[
{ $project: {
_id: 0,
employee: {
$concat: [ "$firstName", " ", "$surname", ", ", "$position" ]
}
}
}
]
)
Kết quả:
{ "employee" : "Sandy Beach, Lifesaver" }
Các loại dữ liệu khác
$concat
toán tử chỉ hỗ trợ chuỗi. Áp dụng $concat
sang một loại khác dẫn đến lỗi.
Ví dụ:
db.employees.aggregate(
[
{ $project: {
_id: 0,
name: {
$concat: [ "$firstName", "$salary" ]
}
}
}
]
)
Kết quả:
Error: command failed: { "ok" : 0, "errmsg" : "$concat only supports strings, not double", "code" : 16702, "codeName" : "Location16702" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:18:14 [email protected]/mongo/shell/assert.js:618:17 [email protected]/mongo/shell/assert.js:708:16 [email protected]/mongo/shell/db.js:266:5 [email protected]/mongo/shell/collection.js:1046:12 @(shell):1:1
Trong ví dụ này, tôi đã cố gắng nối một chuỗi với một số nhưng tôi gặp lỗi cho biết $ concat chỉ hỗ trợ chuỗi chứ không phải kép .