On this page
$substr (aggregation)
在本页面
Definition
$substr
- 从 3.4 版开始不推荐使用:$substr现在是$substrBytes的别名。
返回字符串的子字符串,从指定的索引位置开始,包括指定的字符数。索引从零开始。
$substr具有以下语法:
{ $substr: [ <string>, <start>, <length> ] }
只要第一个参数解析为字符串,第二个和第三个参数解析为整数,则参数可以是任何有效的expression。有关表达式的更多信息,请参见Expressions。
Behavior
如果<start>
为负数,则$substr返回空字符串""
。
如果<length>
为负数,则$substr返回一个子字符串,该子字符串从指定的索引开始,并包括该字符串的其余部分。
$substr仅对于 ASCII 字符字符串具有明确定义的行为。
Example
考虑包含以下文档的inventory
集合:
{ "_id" : 1, "item" : "ABC1", quarter: "13Q1", "description" : "product 1" }
{ "_id" : 2, "item" : "ABC2", quarter: "13Q4", "description" : "product 2" }
{ "_id" : 3, "item" : "XYZ1", quarter: "14Q2", "description" : null }
以下操作使用$substr运算符将quarter
的值分为yearSubstring
和quarterSubstring
:
db.inventory.aggregate(
[
{
$project:
{
item: 1,
yearSubstring: { $substr: [ "$quarter", 0, 2 ] },
quarterSubtring: { $substr: [ "$quarter", 2, -1 ] }
}
}
]
)
该操作返回以下结果:
{ "_id" : 1, "item" : "ABC1", "yearSubstring" : "13", "quarterSubtring" : "Q1" }
{ "_id" : 2, "item" : "ABC2", "yearSubstring" : "13", "quarterSubtring" : "Q4" }
{ "_id" : 3, "item" : "XYZ1", "yearSubstring" : "14", "quarterSubtring" : "Q2" }