En MongoDB, el $toLower
El operador de canalización de agregación convierte una cadena a minúsculas y devuelve el resultado.
Ejemplo
Supongamos que tenemos una colección llamada pets
con los siguientes documentos:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
Podemos usar el $toLower
operador para convertir esos campos en cadenas en minúsculas y devolver el resultado.
Aquí hay un ejemplo de cómo devolver el name
y type
campos en minúsculas:
db.pets.aggregate(
[
{
$project:
{
name: { $toLower: "$name" },
type: { $toLower: "$type" },
weight: "$weight"
}
}
]
)
Resultado:
{ "_id" : 1, "name" : "wag", "type" : "dog", "weight" : 20 } { "_id" : 2, "name" : "bark", "type" : "dog", "weight" : 10 } { "_id" : 3, "name" : "meow", "type" : "cat", "weight" : 7 }
En este caso, la mayoría de los caracteres estaban en minúsculas al principio, pero el primer carácter estaba en mayúsculas. En todos los casos, esos caracteres se convirtieron a minúsculas y se devolvió el resultado.
Conversión de no cadenas
Puedes usar $toLower
en valores que no son necesariamente cadenas. El argumento puede ser cualquier expresión siempre que se resuelva en una cadena.
Por ejemplo, podemos usar $toLower
para convertir el weight
campo a una cadena en minúsculas, aunque ese campo solo contenga números.
Ejemplo:
db.pets.aggregate(
[
{
$project:
{
name: { $toLower: "$name" },
type: { $toLower: "$type" },
weight: { $toLower: "$weight" }
}
}
]
)
Resultado:
{ "_id" : 1, "name" : "wag", "type" : "dog", "weight" : "20" } { "_id" : 2, "name" : "bark", "type" : "dog", "weight" : "10" } { "_id" : 3, "name" : "meow", "type" : "cat", "weight" : "7" }
Podemos ver que el weight
El campo se convirtió en una cadena, porque ahora está entre comillas. Sin embargo, dado que este campo solo contiene números, no hay efecto de minúsculas:los números no tienen mayúsculas ni minúsculas, por lo que no podemos ver ninguna diferencia con respecto al caso.
Si simplemente quisiéramos convertir el número en una cadena, podríamos haber usado $toString
operador o incluso el $convert
operador.