$trim(聚合)
定义
行为
默认情况下,
$trim
会删除空白字符,包括空字符:例子结果{ $trim: { input: " \n good bye \t " } }
"good bye"
可使用
chars
字段覆盖待修剪的默认字符。例如,以下代码会从输入的开始和结束处删除任何
g
和e
。由于输入以空格开头,因此不能从字符串的开头修剪这两个字符。例子结果{ $trim: { input: " ggggoodbyeeeee", chars: "ge" } }
" ggggoodby"
如果覆盖待修剪的默认字符,则可以在
chars
字段中明确包含待修剪的空白字符。例如,以下代码会删除输入开头和结尾处的所有空格、
g
、e
。例子结果{ $trim: { input: " ggggoodbyeeeee", chars: " ge" } }
"oodby"
空白字符
默认情况下,$trim
会删除以下空格,包括空字符:
Unicode | 转义序列 | 说明 |
---|---|---|
U+0000 | '0' | Null 字符 |
U+0020 | ' ' | 空格 |
U+0009 | 't' | Horizontal tab |
U+000A | 'n' | 换行/新行 |
U+000B | 'v' | 垂直制表符 |
U+000C | 'f' | 换页 |
U+000D | 'r' | 回车 |
U+00A0 | 不间断空格 | |
U+1680 | 欧甘文空格标记 | |
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 | 数字空格 | |
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 }
以下操作使用 $trim
操作符从 description
字段中删除前导和结尾的空格:
db.inventory.aggregate([ { $project: { item: 1, description: { $trim: { input: "$description" } } } } ])
操作返回以下结果:
{ "_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." }