sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $toLower

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.