定义
$substr自版本 3.4 起已弃用:
$substr现在是$substrBytes的别名。返回字符串的子字符串,从指定索引位置开始并包含指定数量的字符。该索引从零开始。
$substr通过以下语法实现:{ $substr: [ <string>, <start>, <length> ] } 只要第一个参数解析为字符串,并且第二个和第三个参数解析为整数,参数就可以是任何有效的表达式。 有关表达式的更多信息,请参阅表达式。
行为
如果<start> 为负数,则$substr 返回空字符串"" 。
如果<length> 是负数,则$substr 返回从指定索引开始的子字符串,并包括字符串的其余部分。
$substr 仅对 ASCII 字符字符串有明确定义的行为。
例子
考虑包含以下文档的 inventory 集合:
db.inventory.insertMany( [ { _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 ] }, quarterSubstring: { $substr: [ "$quarter", 2, -1 ] } } } ] )
操作返回以下结果:
{ _id: 1, item: "ABC1", yearSubstring: "13", quarterSubstring: "Q1" } { _id: 2, item: "ABC2", yearSubstring: "13", quarterSubstring: "Q4" } { _id: 3, item: "XYZ1", yearSubstring: "14", quarterSubstring: "Q2" }