$substr (aggregation)

在本页面

Definition

返回字符串的子字符串,从指定的索引位置开始,包括指定的字符数。索引从零开始。

$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的值分为yearSubstringquarterSubstring

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" }
首页