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