$ltrim (aggregation)

Definition

  • $ltrim

New in version 4.0.

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

$ltrim has the following syntax:

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

The $ltrim 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 beginning of theinput.

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

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

See also

$trim and $rtrim

Behavior

  • By default, $ltrim removes whitespace characters,including the null character, from the beginning of the input string:

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

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

For example, the following trims any g and e from the startof the input string. Since the input starts with a whitespace,neither character can be trimmed from the start of the string.

Example Results{ $ltrim: { 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, g, or d from thestart of the input string.

Example Results{ $ltrim: { input: " ggggoodbyeeeee ", chars: " gd" } } "oodbyeeeee "

Whitespace Characters

By default, $ltrim removes the following characters:

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 $ltrim operator to removeleading whitespaces from the description field:

  1. db.inventory.aggregate([
  2. { $project: { item: 1, description: { $ltrim: { 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. \n\n " }
  3. { "_id" : 3, "item" : "XYZ1", "description" : null }