sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $rtrim

I MongoDB, $rtrim aggregeringspipeline-operatören tar bort blanksteg från slutet av en sträng. Detta inkluderar null-tecknet.

Det kan också ta bort alla angivna tecken. Du kan till exempel använda den för att ta bort alla punkter (. ), utropstecken (! ), etc från slutet av en sträng.

Exempel

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

{ "_id" : 1, "name" : "Wag!!!", "type" : "   Dog   ", "weight" : 20 }

Vi kan se att type fältet innehåller blanksteg på båda sidor av ordet Dog . Vi kan använda $rtrim operatorn för att returnera det fältet med blanktecken borttagen från den högra delen av strängen.

Exempel:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      type: { $rtrim: { input: "$type" } } 
    } 
  }
])

Resultat:

{ "_id" : 1, "name" : "Wag!!!", "type" : "   Dog" } 

Som förväntat, type fältet har returnerats utan blanksteg i slutet. Mellanrummet i början finns fortfarande kvar.

Du kan också använda $ltrim operatorn för att trimma den vänstra delen av strängen och $trim operatör för att trimma båda sidor av strängen.

Det finns en hel del tecken som MongoDB anser vara blanksteg. Se MongoDB Whitespace-tecken för en fullständig lista.

Trimma andra tecken

$rtrim operatören accepterar en chars parameter som låter dig specificera vilka tecken som ska trimmas.

Exempel:

db.pets.aggregate([
  { 
    $project: {
      name: { $rtrim: { input: "$name", chars: "!" } } 
    } 
  }
])

Resultat:

{ "_id" : 1, "name" : "Wag" } 

I det här fallet inkluderade vi chars parameter med ett utropstecken (! ), vilket resulterade i att alla tre utropstecken togs bort från slutet av strängen.

Trim flera tecken

Du kan trimma flera tecken genom att inkludera alla i chars argument.

Exempel:

db.pets.aggregate([
  { 
    $project: { 
      name: { $rtrim: { input: "$name", chars: "!g" } } 
    } 
  }
])

Resultat:

{ "_id" : 1, "name" : "Wa" } 

I det här fallet angav jag två tecken som mina chars argument, och två av dessa tecken råkade vara i slutet av strängen. Därför trimmades dessa två karaktärer.

Var dock försiktig när du gör detta. Så här händer när jag inkluderar alla tecken:

db.pets.aggregate([
  { 
    $project: { 
      name: { $rtrim: { input: "$name", chars: "!agW" } } 
    } 
  }
])

Resultat:

{ "_id" : 1, "name" : "" }

Hela strängen har försvunnit. Den har trimmat inte bara ! och g från strängen, men den har också tagit bort W och a tecken.

Trimningsnummer

$rtrim operatören arbetar på strängar. Om vi ​​försöker trimma weight fältet får vi ett fel. Detta beror på att weight fältet är ett nummer, inte en sträng.

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $rtrim: { input: "$weight", chars: "0" } } 
    } 
  }
])

Resultat:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$rtrim requires its input to be a string, got 20 (of type double) instead.",
	"code" : 50699,
	"codeName" : "Location50699"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Felet talar om för oss att vi tillhandahållit en dubbel och att $rtrim operatorn kräver att dess inmatning är en sträng.

Om vi ​​verkligen ville ta bort nollan måste vi först konvertera den till en sträng. Vi kan göra det med antingen $convert eller $toString operatör.

Exempel:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $rtrim: { input: { $toString: "$weight" }, chars: "0" } }
    }
  }
])

Resultat:

{ "_id" : 1, "name" : "Wag!!!", "weight" : "2" } 

Vi kan få tillbaka det till en dubbel genom att använda antingen $convert eller $toDouble operatör.

Fullständigt exempel:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $toDouble: { $rtrim: { input: { $toString: "$weight" }, chars: "0" } } }
    }
  }
])

Resultat:

{ "_id" : 1, "name" : "Wag!!!", "weight" : 2 } 

  1. Mongoose sorterar det aggregerade resultatet

  2. Redis - övervakning av minnesanvändning

  3. Cachar i Django med Redis

  4. Logstash Web UI startar inte