W MongoDB $toUpper
Operator potoku agregacji konwertuje łańcuch na wielkie litery i zwraca wynik.
Przykład
Załóżmy, że mamy kolekcję o nazwie pets
z następującymi dokumentami:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
Możemy użyć $toUpper
operator do konwersji tych pól na ciągi pisane wielkimi literami i zwrócenia wyniku.
Oto przykład zwracania name
i type
pola pisane wielkimi literami:
db.pets.aggregate(
[
{
$project:
{
name: { $toUpper: "$name" },
type: { $toUpper: "$type" },
weight: "$weight"
}
}
]
)
Wynik:
{ "_id" : 1, "name" : "WAG", "type" : "DOG", "weight" : 20 } { "_id" : 2, "name" : "BARK", "type" : "DOG", "weight" : 10 } { "_id" : 3, "name" : "MEOW", "type" : "CAT", "weight" : 7 }
Konwersja nieciągów
Możesz użyć $toUpper
na wartościach, które niekoniecznie są ciągami. Argument może być dowolnym wyrażeniem, o ile jest wynikiem łańcucha.
Na przykład możemy użyć $toUpper
przekonwertować weight
z pola na łańcuch pisany wielkimi literami, nawet jeśli to pole zawiera tylko liczby.
Przykład:
db.pets.aggregate(
[
{
$project:
{
name: { $toUpper: "$name" },
type: { $toUpper: "$type" },
weight: { $toUpper: "$weight" }
}
}
]
)
Wynik:
{ "_id" : 1, "name" : "WAG", "type" : "DOG", "weight" : "20" } { "_id" : 2, "name" : "BARK", "type" : "DOG", "weight" : "10" } { "_id" : 3, "name" : "MEOW", "type" : "CAT", "weight" : "7" }
Widzimy, że weight
pole zostało przekonwertowane na ciąg znaków, ponieważ jest teraz otoczone cudzysłowami. Jednak biorąc pod uwagę, że to pole zawiera tylko liczby, nie ma efektu wielkich liter – liczby nie mają wielkich i małych liter, więc nie widzimy żadnej różnicy w odniesieniu do wielkości liter.
Gdybyśmy chcieli po prostu przekonwertować liczbę na ciąg, moglibyśmy użyć $toString
operator lub nawet $convert
operatora.