$substr(集計)
定義
$substr
バージョン3.4以降では非推奨:
$substr
は現在$substrBytes
のエイリアスです。指定したインデックス位置から始まり、指定した文字数を含む文字列の部分文字列を返します。インデックスは 0 から始まります。
$substr
の構文は次のとおりです。{ $substr: [ <string>, <start>, <length> ] } 引数には、1 番目の引数が文字列になり、2 番目と 3 番目の引数が整数になる限り、 任意の有効な式を使用できます。式について詳しくは、「式演算子」をご覧ください。
動作
<start>
が負の数の場合、 $substr
は空のstring ""
を返します。
<length>
が負の数の場合、 $substr
は指定されたインデックスから始まり、string の残りの部分を含む部分文字列を返します。
$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" }