sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $toLower

I MongoDB, $toLower aggregeringspipeline-operatör konverterar en sträng till gemener och returnerar resultatet.

Exempel

Anta att vi har en samling som heter pets med följande dokument:

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

Vi kan använda $toLower operatorn för att konvertera dessa fält till strängar med små bokstäver och returnera resultatet.

Här är ett exempel på hur du returnerar name och type fält med gemener:

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

Resultat:

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

I det här fallet var de flesta av tecknen små bokstäver till att börja med, men det första tecknet var versaler. I alla fall konverterades dessa tecken till gemener och resultatet returnerades.

Konvertera icke-strängar

Du kan använda $toLower på värden som inte nödvändigtvis är strängar. Argumentet kan vara vilket uttryck som helst så länge det löser sig till en sträng.

Till exempel kan vi använda $toLower för att konvertera weight fält till en gemen sträng, även om det fältet bara innehåller siffror.

Exempel:

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

Resultat:

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

Vi kan se att weight fältet konverterades till en sträng, eftersom det nu är omgivet av citattecken. Men med tanke på att det här fältet bara innehåller siffror, finns det ingen effekt med gemener – siffror har inte versaler och gemener, så vi kan inte se någon skillnad i förhållande till skiftläge.

Om vi ​​bara ville konvertera numret till en sträng kunde vi ha använt $toString operatorn eller till och med $convert operatör.


  1. Kapslade objekt i mongoosescheman

  2. Vad är det korrekta sättet att indexera i MongoDB när stora kombinationer av fält finns

  3. Redis AOF fsync (ALLTID) kontra LSM-träd

  4. konfigurera redis auth på sidekiq