MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB $toLower


No MongoDB, o $toLower operador de pipeline de agregação converte uma string em minúscula e retorna o resultado.

Exemplo


Suponha que tenhamos uma coleção chamada pets com os seguintes 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 o $toLower operador para converter esses campos em strings minúsculas e retornar o resultado.

Aqui está um exemplo de como retornar o name e type campos em 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 }

Nesse caso, a maioria dos caracteres eram minúsculos para começar, mas o primeiro caractere era maiúsculo. Em todos os casos, esses caracteres foram convertidos em minúsculos e o resultado foi retornado.

Conversão de não strings


Você pode usar $toLower em valores que não são necessariamente strings. O argumento pode ser qualquer expressão, desde que resolva para uma string.

Por exemplo, podemos usar $toLower para converter o weight campo para uma string minúscula, mesmo que esse campo contenha apenas números.

Exemplo:
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 o weight campo foi convertido em uma string, porque agora está entre aspas. No entanto, como este campo contém apenas números, não há efeito de minúsculas – os números não possuem maiúsculas e minúsculas, e por isso não podemos ver nenhuma diferença em relação às maiúsculas.

Se simplesmente quiséssemos converter o número em uma string, poderíamos ter usado o $toString operador ou mesmo o $convert operador.