sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $toLower

V MongoDB, $toLower operátor agregačního kanálu převede řetězec na malá písmena a vrátí výsledek.

Příklad

Předpokládejme, že máme sbírku nazvanou pets s následujícími dokumenty:

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

Můžeme použít $toLower operátor převede tato pole na řetězce s malými písmeny a vrátí výsledek.

Zde je příklad vrácení name a type pole malými písmeny:

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

Výsledek:

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

V tomto případě byla většina znaků na začátku malá, ale první znak byl velký. Ve všech případech byly tyto znaky převedeny na malá a výsledek byl vrácen.

Převod jiných než řetězců

Můžete použít $toLower na hodnotách, které nemusí být nutně řetězce. Argumentem může být jakýkoli výraz, pokud se překládá na řetězec.

Můžeme například použít $toLower pro převod weight pole na řetězec s malými písmeny, i když toto pole obsahuje pouze čísla.

Příklad:

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

Výsledek:

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

Vidíme, že weight pole bylo převedeno na řetězec, protože je nyní obklopeno uvozovkami. Avšak vzhledem k tomu, že toto pole obsahuje pouze čísla, nedochází k žádnému efektu malých písmen – čísla nemají velká a malá písmena, a proto nevidíme žádný rozdíl mezi velkými a malými písmeny.

Pokud bychom chtěli jednoduše převést číslo na řetězec, mohli jsme použít $toString operátor nebo dokonce $convert operátor.


  1. MongoDB Vztah jeden k mnoha

  2. MongoDB $toLong

  3. Problémy MongoDB PHP UTF-8

  4. Jak programově předem rozdělit Shard Key založený na GUID pomocí MongoDB