Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$substr(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$substr

自版本 3.4 起已弃用$substr 现为 $substrBytes 的别名。

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

$substr 通过以下语法实现:

{ $substr: [ <string>, <start>, <length> ] }

只要第一个参数解析为字符串,并且第二个和第三个参数解析为整数,参数就可以是任何有效的表达式。 有关表达式的更多信息,请参阅表达式操作符。

如果<start>是负数,则$substr返回空字符串""

如果<length>是负数,则$substr返回从指定索引开始并包含字符串其余部分的子字符串。

$substr 仅对 ASCII 字符字符串有明确定义的行为。

考虑包含以下文档的 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" }
← $strLenCP(聚合)

在此页面上