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