文档菜单
文档首页
/
MongoDB 手册
/ / /

$substr (聚合)

在本页

  • 定义
  • 行为
  • 示例
$substr

已弃用自版本3.4: $substr 现在是 $substrBytes 的别名。

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

$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" }

返回

字符串字符集长度