Definition
$trimRemoves whitespace characters, including null, or the specified characters from the beginning and end of a string.
$trimhas the following syntax:{ $trim: { input: <string>, chars: <string> } } The
$trimtakes a document with the following fields:FieldDescriptioninputThe string to trim. The argument can be any valid expression that resolves to a string. For more information on expressions, see Expressions.
charsOptional. The character(s) to trim from
input.The argument can be any valid expression that resolves to a string. The
$trimoperator breaks down the string into individual UTF code point to trim frominput.If unspecified,
$trimremoves whitespace characters, including the null character. For the list of whitespace characters, see Whitespace Characters.
Behavior
By default,
$trimremoves whitespace characters, including the null character:ExampleResults{ $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
gandefrom the start and end of the input. Since the input starts with a whitespace, neither character can be trimmed from the start of the string.ExampleResults{ $trim: { input: " ggggoodbyeeeee", chars: "ge" } }" ggggoodby"If overriding the default characters to trim, you can explicitly include the whitespace character(s) to trim in the
charsfield.For example, the following trims any space,
g,efrom the start 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:
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 $trim operator to remove
leading and trailing whitespaces from the description field:
db.inventory.aggregate([ { $project: { item: 1, description: { $trim: { input: "$description" } } } } ])
The operation returns the following results:
{ "_id" : 1, "item" : "ABC1", "description" : "product 1" } { "_id" : 3, "item" : "XYZ1", "description" : null } { "_id" : 2, "item" : "ABC2", "description" : "product 2 \n The product is in stock." }