定義
$substrバージョン3.4から非推奨:
$substrは$substrBytesのエイリアスになりました。指定したインデックス位置から始まり、指定した文字数を含む文字列の部分文字列を返します。インデックスは 0 から始まります。
$substrの構文は次のとおりです。{ $substr: [ <string>, <start>, <length> ] } 引数には、1 番目の引数が string になり、2 番目と 3 番目の引数が整数になる限り、 任意の有効な式を使用できます 。 式の詳細については、「式 」を参照してください。
動作
<start>が負の数の場合、$substr は空の文字列"" を返します。
<length>が負の数の場合、 は指定されたインデックスから始まり、string$substr の残りの部分を含む部分文字列を返します。
$substr は ASCII 文字の文字列に対してのみ、明確に定義された動作を行います。
例
以下の例では、sample_mflix サンプル データセットの movies コレクションを使用します。このデータセットを配置にロードする方法について詳しくは、「サンプル データセットのロード」を参照してください。
この集計操作では、$substr 演算子を使用して、title の値をtitleStart とtitleRest に分割します。 2 番目の式では、負の<length> を使用して、インデックス から3 string の末尾に文字を返します。
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { _id: 0, title: 1, titleStart: { $substr: [ "$title", 0, 3 ] }, titleRest: { $substr: [ "$title", 3, -1 ] } } } ] )
[ { title: 'Centennial', titleStart: 'Cen', titleRest: 'tennial' }, { title: 'Baseball', titleStart: 'Bas', titleRest: 'eball' } ]