W MongoDB $toLower
Operator potoku agregacji konwertuje łańcuch na małe 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ć $toLower
operatora, aby zamienić te pola na ciągi pisane małymi literami i zwrócić wynik.
Oto przykład zwracania name
i type
pola pisane małymi literami:
db.pets.aggregate(
[
{
$project:
{
name: { $toLower: "$name" },
type: { $toLower: "$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 }
W tym przypadku większość znaków była na początku małymi, ale pierwszy znak był wielkimi. We wszystkich przypadkach te znaki zostały zamienione na małe i zwrócono wynik.
Konwersja nieciągów
Możesz użyć $toLower
na wartościach, które niekoniecznie są ciągami. Argumentem może być dowolne wyrażenie, o ile jest tłumaczone na łańcuch.
Na przykład możemy użyć $toLower
przekonwertować weight
pole na ciąg z małymi literami, nawet jeśli to pole zawiera tylko liczby.
Przykład:
db.pets.aggregate(
[
{
$project:
{
name: { $toLower: "$name" },
type: { $toLower: "$type" },
weight: { $toLower: "$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 małych 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.