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

MongoDB $toUpper

Dans MongoDB, le $toUpper L'opérateur de pipeline d'agrégation convertit une chaîne en majuscules 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 $toUpper pour convertir ces champs en chaînes majuscules et renvoyer le résultat.

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

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

Convertir des non-chaînes

Vous pouvez utiliser $toUpper 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 $toUpper pour convertir le weight champ en une chaîne en majuscule, même si ce champ ne contient que des chiffres.

Exemple :

db.pets.aggregate(
  [
    {
      $project:
        { 
          name: { $toUpper: "$name" },
          type: { $toUpper: "$type" },
          weight: { $toUpper: "$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 nombres, il n'y a pas d'effet majuscule - 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 opérateur ou même le $convert opérateur.