$ltrim聚合运算符用于裁剪字符串左边的空格(包括null)或指定的字符串。
语法
{ $ltrim: { input: <string>, chars: <string> } }
字段说明:
input,要裁剪的字符串,可以是任何能解析为字符串的表达式。chars,可选,要从input字符串中修剪的字符或字符串,可以是任何能够解析为字符串的表达式。如果不指定,$ltrim将移除空格字符串(包括空字符)
使用
- 缺省情况下,
$ltrim移除输入字符串左边的空格和空字符,如:
{ $ltrim: { input: " \n good bye \t " } }
结果为:"good bye \t "
- 可以使用
chars指定其他要移除的字符,下面的例子移除输入字符串左边g或e开始的字符串,但是因为字符串是空格开始的,所以没有字符被移除。
{ $ltrim: { input: " ggggoodbyeeeee", chars: "ge" } }
结果:" ggggoodbyeeeee"
- 也可以通过指定空格和其他字符来替代缺省的字符,下面的例子就是移除掉输入字符串以空格、字符g或d开头的字符
{ $ltrim: { input: " ggggoodbyeeeee ", chars: " gd" } }
结果:"oodbyeeeee "
空白字符
缺省情况下,$ltrim移除下面的字符:
| Unicode | 转义序列 | 描述 |
|---|---|---|
| U+0000 | ‘0’ | 空字符 |
| U+0020 | ’ ’ | 空格 |
| U+0009 | ‘t’ | 水平制表符 |
| U+000A | ‘n’ | 换行符 |
| U+000B | ‘v’ | 垂直制表符 |
| U+000C | ‘f’ | 分页符 |
| U+000D | ‘r’ | 回车符 |
| U+00A0 | 不间断空格 | |
| U+1680 | 奥格姆空格标记 | |
| U+2000 | 半身空铅 | |
| U+2001 | 正方空铅 | |
| U+2002 | 半方空位 | |
| U+2003 | 字元的正方空位 | |
| U+2004 | 三分之一全方空格 | |
| U+2005 | 四分之一全方空格 | |
| U+2006 | 六分之一全方空格 | |
| U+2007 | 数字空格 | |
| U+2008 | 标点空格 | |
| U+2009 | 窄空格 | |
| U+200A | 细空格 |
举例
inventory集合有下列文档:
{ "_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 }
下面的聚合操作使用$ltrim运算符description字段左边开头的空格:
db.inventory.aggregate([
{ $project: { item: 1, description: { $ltrim: { input: "$description" } } } }
])
操作返回下面的结果:
{ "_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 }
875

被折叠的 条评论
为什么被折叠?



