$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 值分离为 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" }