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