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

MongoDB $toUpper

En MongoDB, el $toUpper El operador de canalización de agregación convierte una cadena a mayú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 $toUpper operador para convertir esos campos en cadenas en mayúsculas y devolver el resultado.

Aquí hay un ejemplo de cómo devolver el name y type campos en mayúsculas:

db.pets.aggregate(
  [
    {
      $project:
        { 
          name: { $toUpper: "$name" },
          type: { $toUpper: "$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 }

Conversión de no cadenas

Puedes usar $toUpper 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 $toUpper para convertir el weight campo a una cadena en mayúsculas, aunque ese campo solo contenga números.

Ejemplo:

db.pets.aggregate(
  [
    {
      $project:
        { 
          name: { $toUpper: "$name" },
          type: { $toUpper: "$type" },
          weight: { $toUpper: "$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 mayú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.