V MongoDB, $toLower
operátor agregačního kanálu převede řetězec na malá písmena a vrátí výsledek.
Příklad
Předpokládejme, že máme sbírku nazvanou pets
s následujícími dokumenty:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
Můžeme použít $toLower
operátor převede tato pole na řetězce s malými písmeny a vrátí výsledek.
Zde je příklad vrácení name
a type
pole malými písmeny:
db.pets.aggregate(
[
{
$project:
{
name: { $toLower: "$name" },
type: { $toLower: "$type" },
weight: "$weight"
}
}
]
)
Výsledek:
{ "_id" : 1, "name" : "wag", "type" : "dog", "weight" : 20 } { "_id" : 2, "name" : "bark", "type" : "dog", "weight" : 10 } { "_id" : 3, "name" : "meow", "type" : "cat", "weight" : 7 }
V tomto případě byla většina znaků na začátku malá, ale první znak byl velký. Ve všech případech byly tyto znaky převedeny na malá a výsledek byl vrácen.
Převod jiných než řetězců
Můžete použít $toLower
na hodnotách, které nemusí být nutně řetězce. Argumentem může být jakýkoli výraz, pokud se překládá na řetězec.
Můžeme například použít $toLower
pro převod weight
pole na řetězec s malými písmeny, i když toto pole obsahuje pouze čísla.
Příklad:
db.pets.aggregate(
[
{
$project:
{
name: { $toLower: "$name" },
type: { $toLower: "$type" },
weight: { $toLower: "$weight" }
}
}
]
)
Výsledek:
{ "_id" : 1, "name" : "wag", "type" : "dog", "weight" : "20" } { "_id" : 2, "name" : "bark", "type" : "dog", "weight" : "10" } { "_id" : 3, "name" : "meow", "type" : "cat", "weight" : "7" }
Vidíme, že weight
pole bylo převedeno na řetězec, protože je nyní obklopeno uvozovkami. Avšak vzhledem k tomu, že toto pole obsahuje pouze čísla, nedochází k žádnému efektu malých písmen – čísla nemají velká a malá písmena, a proto nevidíme žádný rozdíl mezi velkými a malými písmeny.
Pokud bychom chtěli jednoduše převést číslo na řetězec, mohli jsme použít $toString
operátor nebo dokonce $convert
operátor.