MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $toLower

Dans MongoDB, le $toLower l'opérateur de pipeline d'agrégation convertit une chaîne en minuscules et renvoie le résultat.

Exemple

Supposons que nous ayons une collection appelée pets avec les documents suivants :

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }

Nous pouvons utiliser le $toLower pour convertir ces champs en chaînes minuscules et renvoyer le résultat.

Voici un exemple de renvoi du name et type champs en minuscules :

db.pets.aggregate(
  [
    {
      $project:
        { 
          name: { $toLower: "$name" },
          type: { $toLower: "$type" },
          weight: "$weight"
        }
    }
  ]
)

Résultat :

{ "_id" : 1, "name" : "wag", "type" : "dog", "weight" : 20 }
{ "_id" : 2, "name" : "bark", "type" : "dog", "weight" : 10 }
{ "_id" : 3, "name" : "meow", "type" : "cat", "weight" : 7 }

Dans ce cas, la plupart des caractères étaient en minuscules au départ, mais le premier caractère était en majuscule. Dans tous les cas, ces caractères ont été convertis en minuscules et le résultat a été renvoyé.

Convertir des non-chaînes

Vous pouvez utiliser $toLower sur des valeurs qui ne sont pas nécessairement des chaînes. L'argument peut être n'importe quelle expression tant qu'il se résout en une chaîne.

Par exemple, nous pouvons utiliser $toLower pour convertir le weight champ en une chaîne en minuscules, même si ce champ ne contient que des chiffres.

Exemple :

db.pets.aggregate(
  [
    {
      $project:
        { 
          name: { $toLower: "$name" },
          type: { $toLower: "$type" },
          weight: { $toLower: "$weight" }
        }
    }
  ]
)

Résultat :

{ "_id" : 1, "name" : "wag", "type" : "dog", "weight" : "20" }
{ "_id" : 2, "name" : "bark", "type" : "dog", "weight" : "10" }
{ "_id" : 3, "name" : "meow", "type" : "cat", "weight" : "7" }

Nous pouvons voir que le weight champ a été converti en chaîne, car il est maintenant entouré de guillemets. Cependant, étant donné que ce champ ne contient que des chiffres, il n'y a pas d'effet de minuscules - les nombres n'ont pas de majuscules et de minuscules, et nous ne pouvons donc pas voir de différence en ce qui concerne la casse.

Si nous voulions simplement convertir le nombre en chaîne, nous aurions pu utiliser le $toString ou encore l'opérateur $convert opérateur.