Trong MongoDB, $toUpper
toán tử đường ống tổng hợp chuyển đổi một chuỗi thành chữ hoa và trả về kết quả.
Ví dụ
Giả sử chúng ta có một bộ sưu tập có tên là pets
với các tài liệu sau:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
Chúng ta có thể sử dụng $toUpper
toán tử để chuyển đổi các trường đó thành chuỗi chữ hoa và trả về kết quả.
Dưới đây là một ví dụ về việc trả lại name
và type
các trường viết hoa:
db.pets.aggregate(
[
{
$project:
{
name: { $toUpper: "$name" },
type: { $toUpper: "$type" },
weight: "$weight"
}
}
]
)
Kết quả:
{ "_id" : 1, "name" : "WAG", "type" : "DOG", "weight" : 20 } { "_id" : 2, "name" : "BARK", "type" : "DOG", "weight" : 10 } { "_id" : 3, "name" : "MEOW", "type" : "CAT", "weight" : 7 }
Chuyển đổi không phải chuỗi
Bạn có thể sử dụng $toUpper
trên các giá trị không nhất thiết phải là chuỗi. Đối số có thể là bất kỳ biểu thức nào miễn là nó phân giải thành một chuỗi.
Ví dụ:chúng ta có thể sử dụng $toUpper
để chuyển đổi weight
trường thành một chuỗi chữ hoa, mặc dù trường đó chỉ chứa các số.
Ví dụ:
db.pets.aggregate(
[
{
$project:
{
name: { $toUpper: "$name" },
type: { $toUpper: "$type" },
weight: { $toUpper: "$weight" }
}
}
]
)
Kết quả:
{ "_id" : 1, "name" : "WAG", "type" : "DOG", "weight" : "20" } { "_id" : 2, "name" : "BARK", "type" : "DOG", "weight" : "10" } { "_id" : 3, "name" : "MEOW", "type" : "CAT", "weight" : "7" }
Chúng ta có thể thấy rằng weight
trường đã được chuyển đổi thành một chuỗi, vì nó hiện được bao quanh bởi dấu ngoặc kép. Tuy nhiên, do trường này chỉ chứa các số nên không có hiệu ứng viết hoa - các số không có chữ hoa và chữ thường, vì vậy chúng tôi không thể thấy bất kỳ sự khác biệt nào về cách viết hoa.
Nếu chúng ta chỉ muốn chuyển đổi số thành một chuỗi, chúng ta có thể sử dụng $toString
toán tử hoặc thậm chí $convert
nhà điều hành.