$indexOfCP(集計)
定義
$indexOfCP
バージョン 3.4 で追加。
string から部分文字列を検索し、UTF-8 コード ポイント を返します 最初の出現のインデックス(ゼロベース)。部分文字列が見つからない場合は、
-1
が返されます。$indexOfCP
には次の演算子式の構文があります。{ $indexOfCP: [ <string expression>, <substring expression>, <start>, <end> ] } フィールドタイプ説明<string>
stringに変換される限り、任意の有効な 式 stringを指定できます。式の詳細については、「式 」を参照してください。
string 式が
null
の値に解決されるか、欠落しているフィールドを参照する場合、$indexOfCP
はnull
を返します。string 式が string または
null
に解決されず、欠落しているフィールドを参照しない場合は、$indexOfCP
はエラーを返します。<substring>
stringに変換される限り、任意の有効な 式 stringを指定できます。式の詳細については、「式 」を参照してください。<start>
integer任意。検索の開始インデックス位置を指定する整数、または整数で表せる数値(2.0など)。負でない整数に変換される任意の有効な式を指定できます。
指定しない場合、検索の開始インデックス位置は文字列の先頭になります。
<end>
integer任意。 検索の終了インデックス位置を指定する整数、または整数で表せる数値( 2.0など)。 負でない整数に変換される任意の有効な式を指定できます。
<end>
インデックス値を指定する場合は、<start>
インデックス値も指定する必要があります。それ以外の場合、$indexOfCP
は<end>
値ではなく<start>
インデックス値として<end>
値を使用します。指定しない場合、検索の終了インデックス位置は文字列の末尾になります。
動作
<substring expression>
が<string expression>
内で複数回見つかった場合、 $indexOfCP
は開始インデックス位置から見つかった最初の<substring expression>
のインデックスを返します。
$indexOfCP
はnull
を返します。
<string expression>
が null の場合、または<string expression>
が入力ドキュメント内の存在しないフィールドを参照している場合。
$indexOfCP
は以下の場合エラーを返します。
<string expression>
が string ではなく null でない場合、または<substring expression>
が null または string ではなく、入力ドキュメントに存在しないフィールドを参照する場合、または<start>
または<end>
が負の整数(または -5.0 のように負の整数として表せる値)の場合。
$indexOfCP
は-1
を返します。
部分文字列が
<string expression>
で見つからない場合、または<start>
が<end>
より大きい数値の場合、または<start>
が string のバイト長よりも大きい数値の場合。
例 | 結果 |
---|---|
{ $indexOfCP: [ "cafeteria", "e" ] } | 3 |
{ $indexOfCP: [ "cafétéria", "é" ] } | 3 |
{ $indexOfCP: [ "cafétéria", "e" ] } | -1 |
{ $indexOfCP: [ "cafétéria", "t" ] } | 4 |
{ $indexOfCP: [ "foo.bar.fi", ".", 5 ] } | 7 |
{ $indexOfCP: [ "vanilla", "ll", 0, 2 ] } | -1 |
{ $indexOfCP: [ "vanilla", "ll", -1 ] } | エラー |
{ $indexOfCP: [ "vanilla", "ll", 12 ] } | -1 |
{ $indexOfCP: [ "vanilla", "ll", 5, 2 ] } | -1 |
{ $indexOfCP: [ "vanilla", "nilla", 3 ] } | -1 |
{ $indexOfCP: [ null, "foo" ] } | null |
例
以下のドキュメントを持つinventory
コレクションを検討してください。
{ "_id" : 1, "item" : "foo" } { "_id" : 2, "item" : "fóofoo" } { "_id" : 3, "item" : "the foo bar" } { "_id" : 4, "item" : "hello world fóo" } { "_id" : 5, "item" : null } { "_id" : 6, "amount" : 3 }
次の操作では、 $indexOfCP
演算子を使用して、各item
string に string foo
が配置されているコードポイント インデックスを返します。
db.inventory.aggregate( [ { $project: { cpLocation: { $indexOfCP: [ "$item", "foo" ] }, } } ] )
この操作は次の結果を返します。
{ "_id" : 1, "cpLocation" : "0" } { "_id" : 2, "cpLocation" : "3" } { "_id" : 3, "cpLocation" : "4" } { "_id" : 4, "cpLocation" : "-1" } { "_id" : 5, "cpLocation" : null } { "_id" : 6, "cpLocation" : null }