定義
$indexOfCPバージョン 3.4 で追加。
string から部分文字列を検索し、最初に出現した string の UTF-8 コード点インデックス(ゼロ ベース)を返します。部分文字列が見つからない場合は、
-1が返されます。$indexOfCPには次の演算子式の構文があります。{ $indexOfCP: [ <string expression>, <substring expression>, <start>, <end> ] } フィールドタイプ説明<string>string
に変換される限り、任意の有効な 式 stringを指定できます。式の詳細については、「式 」を参照してください。
string式が の値に解決されるか、欠落しているフィールドを参照する場合、
null$indexOfCPnullは を返します。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 のバイト長よりも大きい数値の場合。
例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
| エラー |
|
|
|
|
|
|
|
|
例
以下のドキュメントを持つ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 }