Docs 主页 → 开发应用程序 → MongoDB Manual
$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" }