$rtrim (aggregation)

Definition

  • $rtrim

New in version 4.0.

Removes whitespace characters, including null, or the specifiedcharacters from the end of a string.

$rtrim has the following syntax:

  1. { $rtrim: { input: <string>, chars: <string> } }

The $rtrim takes a document with the following fields:

FieldDescriptioninputThe string to trim. The argument can be any validexpression that resolves toa string. For more information on expressions, seeExpressions.charsOptional. The character(s) to trim from the end of theinput.

The argument can be any valid expression that resolves to a string. The$rtrim operator breaks down the string intoindividual UTF code point to trim frominput.

If unspecified, $rtrim removes whitespacecharacters, including the null character. For the list ofwhitespace characters, see Whitespace Characters.

See also

$ltrim and $trim

Behavior

  • By default, $rtrim removes whitespaces,including the null character, from the end of the input string:

Example Results{ $rtrim: { input: " \n good bye \t " } } " \n good bye"

  • You can override the default characters to trim using the charsfield.

For example, the following trims any g and e from the end ofthe input string. Since the input ends with a whitespace, neithercharacter can be trimmed from the end of the string.

Example Results{ $rtrim: { input: "ggggoodbyeeeee ", chars: "ge" } } "ggggoodbyeeeee "

  • If overriding the default characters to trim, you can explicitlyinclude the whitespace character(s) to trim in the chars field.

For example, the following trims any space or e from the end ofthe input string.

Example Results{ $rtrim: { input: " ggggoodbyeeeee ", chars: "e " } } " ggggoodby"

Whitespace Characters

By default, $rtrim removes the following whitespaces,including the null character:

UnicodeEscape sequenceDescription
U+0000‘0’Null character
U+0020‘ ‘Space
U+0009‘t’Horizontal tab
U+000A‘n’Line feed/new line
U+000B‘v’Vertical tab
U+000C‘f’Form feed
U+000D‘r’Carriage return
U+00A0 Non-breaking space
U+1680 Ogham space mark
U+2000 En quad
U+2001 Em quad
U+2002 En space
U+2003 Em space
U+2004 Three-per-em space
U+2005 Four-per-em space
U+2006 Six-per-em space
U+2007 Figure space
U+2008 Punctuation space
U+2009 Thin space
U+200A Hair space

Example

Consider an inventory collection with the following documents:

  1. { "_id" : 1, "item" : "ABC1", quarter: "13Q1", "description" : " product 1" }
  2. { "_id" : 2, "item" : "ABC2", quarter: "13Q4", "description" : "product 2 \n The product is in stock. \n\n " }
  3. { "_id" : 3, "item" : "XYZ1", quarter: "14Q2", "description" : null }

The following operation uses the $rtrim operator toremove trailing whitespaces from the description field:

  1. db.inventory.aggregate([
  2. { $project: { item: 1, description: { $rtrim: { input: "$description" } } } }
  3. ])

The operation returns the following results:

  1. { "_id" : 1, "item" : "ABC1", "description" : " product 1" }
  2. { "_id" : 2, "item" : "ABC2", "description" : "product 2 \n The product is in stock." }
  3. { "_id" : 3, "item" : "XYZ1", "description" : null }