$ltrim (aggregation)
Definition
New in version 4.0.
Removes whitespace characters, including null, or the specifiedcharacters from the beginning of a string.
$ltrim
has the following syntax:
- { $ltrim: { input: <string>, chars: <string> } }
The $ltrim
takes a document with the following fields:
FieldDescriptioninput
The string to trim. The argument can be any validexpression that resolves toa string. For more information on expressions, seeExpressions.chars
Optional. 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
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
chars
field.
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:
Unicode | Escape sequence | Description |
---|---|---|
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:
- { "_id" : 1, "item" : "ABC1", quarter: "13Q1", "description" : " product 1" }
- { "_id" : 2, "item" : "ABC2", quarter: "13Q4", "description" : "product 2 \n The product is in stock. \n\n " }
- { "_id" : 3, "item" : "XYZ1", quarter: "14Q2", "description" : null }
The following operation uses the $ltrim
operator to removeleading whitespaces from the description
field:
- db.inventory.aggregate([
- { $project: { item: 1, description: { $ltrim: { input: "$description" } } } }
- ])
The operation returns the following results:
- { "_id" : 1, "item" : "ABC1", "description" : "product 1" }
- { "_id" : 2, "item" : "ABC2", "description" : "product 2 \n The product is in stock. \n\n " }
- { "_id" : 3, "item" : "XYZ1", "description" : null }