V MongoDB, $toUpper
operátor agregačního kanálu převede řetězec na velká 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 $toUpper
operátor převede tato pole na velké řetězce a vrátí výsledek.
Zde je příklad vrácení name
a type
pole velkými písmeny:
db.pets.aggregate(
[
{
$project:
{
name: { $toUpper: "$name" },
type: { $toUpper: "$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 }
Převod jiných než řetězců
Můžete použít $toUpper
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 $toUpper
pro převod weight
pole na řetězec s velkými písmeny, i když toto pole obsahuje pouze čísla.
Příklad:
db.pets.aggregate(
[
{
$project:
{
name: { $toUpper: "$name" },
type: { $toUpper: "$type" },
weight: { $toUpper: "$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 efektu velkých písmen – čísla nemají velká a malá písmena, a proto nevidíme žádný rozdíl mezi velikostí písmen.
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.