$trim (aggregation)

Definition

  • $trim

New in version 4.0.

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

$trim has the following syntax:

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

The $trim 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 input.

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

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

See also

$ltrim and $rtrim

Behavior

  • By default, $trim removes whitespace characters,including the null character:

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

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

For example, the following trims any g and e from the start and end of the input. Since the input starts with awhitespace, neither character can be trimmed from the start of thestring.

ExampleResults{ $trim: { input: " ggggoodbyeeeee", chars: "ge" } }" ggggoodby"

  • 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, g, e from thestart and end of the input.

ExampleResults{ $trim: { input: " ggggoodbyeeeee", chars: " ge" } }"oodby"

Whitespace Characters

By default, $trim 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 $trim operator to removeleading and trailing whitespaces from the description field:

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

The operation returns the following results:

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