MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

$rtrim . MongoDB

W MongoDB $rtrim Operator potoku agregacji usuwa białe znaki z końca ciągu. Obejmuje to znak null.

Może również usunąć dowolny określony znak. Na przykład możesz go użyć do usunięcia wszystkich kropek (. ), wykrzykniki (! ) itp. od końca ciągu.

Przykład

Załóżmy, że mamy kolekcję o nazwie pets z następującym dokumentem:

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

Widzimy, że type pole zawiera białe znaki po obu stronach słowa Dog . Możemy użyć $rtrim operatora, aby zwrócić to pole z usuniętą spacją z prawej części ciągu.

Przykład:

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

Wynik:

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

Zgodnie z oczekiwaniami type pole zostało zwrócone bez spacji na końcu. Biała spacja na początku nadal pozostaje.

Możesz także użyć $ltrim operator do przycinania lewej części łańcucha i $trim operatora, aby przyciąć obie strony łańcucha.

Istnieje wiele znaków, które MongoDB uważa za znaki odstępu. Zobacz pełną listę znaków odstępu MongoDB.

Przytnij inne znaki

$rtrim operator akceptuje chars parametr, który pozwala określić, które znaki należy przyciąć.

Przykład:

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

Wynik:

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

W tym przypadku dołączyliśmy chars parametr z wykrzyknikiem (! ), co spowodowało usunięcie wszystkich trzech wykrzykników z końca ciągu.

Przytnij wiele znaków

Możesz przyciąć wiele znaków, umieszczając je wszystkie w chars argument.

Przykład:

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

Wynik:

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

W tym przypadku podałem dwa znaki jako moje chars argument, a dwa z tych znaków znalazły się na końcu ciągu. Dlatego te dwie postacie zostały przycięte.

Bądź jednak ostrożny, kiedy to robisz. Oto, co się dzieje, gdy uwzględnię wszystkie znaki:

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

Wynik:

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

Zniknął cały ciąg. Przyciął nie tylko ! i g z ciągu, ale usunięto również W i a znaków.

Liczby przycinające

$rtrim operator działa na ciągach. Jeśli spróbujemy przyciąć weight pole, otrzymujemy błąd. Dzieje się tak, ponieważ weight pole jest liczbą, a nie ciągiem.

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

Wynik:

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

Błąd informuje nas, że podaliśmy double i że $rtrim operator wymaga, aby jego dane wejściowe były ciągiem.

Gdybyśmy naprawdę chcieli usunąć zero, musielibyśmy najpierw przekonwertować je na łańcuch. Możemy to zrobić za pomocą $convert lub $toString operatora.

Przykład:

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

Wynik:

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

Możemy przywrócić to do podwójnego za pomocą $convert lub $toDouble operatora.

Pełny przykład:

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

Wynik:

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

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB — eksport danych

  2. Jak dołączyć do wielu kolekcji za pomocą $lookup w mongodb

  3. Suma w zagnieżdżonym dokumencie MongoDB

  4. Jaki jest czysty sposób na zatrzymanie Mongod w systemie Mac OS X?

  5. MongoDB na Androida