Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$indexOfBytes(集計)

項目一覧

  • 定義
  • 動作
$indexOfBytes

バージョン 3.4 で追加

string から部分文字列を検索し、最初に出現した string の UTF- 8バイトインデックス(ゼロベース)を返します。 部分文字列が見つからない場合は、 -1を返します。

$indexOfBytesには次の演算子式の構文があります。

{ $indexOfBytes: [ <string expression>, <substring expression>, <start>, <end> ] }
オペランド
説明
<string expression>

に変換される限り、任意の有効な stringを指定できます。式の詳細については、「式 」を参照してください。

string 式がnullの値に解決されるか、欠落しているフィールドを参照する場合、 $indexOfBytesnullを返します。

string 式が string またはnullに解決されず、欠落しているフィールドを参照しない場合は、 $indexOfBytesはエラーを返します。

<substring expression>
に変換される限り、任意の有効な stringを指定できます。式の詳細については、「式 」を参照してください。
<start>
任意検索の開始インデックス位置を指定する整数。 負でない整数に変換される任意の有効なを指定できます。
<end>
任意検索の終了インデックス位置を指定する整数。 負でない整数に変換される任意の有効なを指定できます。 <end>インデックス値を指定する場合は、 <start>インデックス値も指定する必要があります。それ以外の場合、 $indexOfBytes<end>値ではなく<end>値を<start>インデックス値として使用します。
  • <string expression>が null の場合、 $indexOfBytesnullを返します。

  • ドキュメントに存在しないフィールドで$indexOfBytesが呼び出された場合、 $indexOfBytesnullを返します。

  • <string expression>が string ではなく null でない場合、 $indexOfBytesはエラーを返します。

  • <substring expression>が null の場合、 $indexOfBytesはエラーを返します。

  • <start>または<end>が負の数の場合、 $indexOfBytesはエラーを返します。

  • <start><end>より大きい数値の場合、 $indexOfBytes-1を返します。

  • <start>が string のバイト長よりも大きい数値の場合、 $indexOfBytes-1を返します。

  • <start>または<end>に整数以外の値が指定されている場合、 $indexOfBytesはエラーを返します。

  • <substring expression><string expression>内で複数回見つかった場合、 $indexOfBytesは最初に見つかった<substring expression>のインデックスを返します。

異なる動作を示す短い例をいくつか示します。

結果
{ $indexOfBytes: [ "cafeteria", "e" ] }
3
{ $indexOfBytes: [ "cafétéria", "é" ] }
3
{ $indexOfBytes: [ "cafétéria", "e" ] }
-1
{ $indexOfBytes: [ "cafétéria", "t" ] }
5
{ $indexOfBytes: [ "foo.bar.fi", ".", 5 ] }
7
{ $indexOfBytes: [ "vanilla", "ll", 0, 2 ] }
-1
{ $indexOfBytes: [ "vanilla", "ll", -1 ] }
-1
{ $indexOfBytes: [ "vanilla", "ll", 12 ] }
-1
{ $indexOfBytes: [ "vanilla", "ll", 5, 2 ] }
-1
{ $indexOfBytes: [ "vanilla", "nilla", 3 ] }
-1
{ $indexOfBytes: [ 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 }

次の操作では、 $indexOfBytes演算子を使用して、各アイテム内で string fooが配置されているインデックスを検索します。

db.inventory.aggregate(
[
{
$project:
{
byteLocation: { $indexOfBytes: [ "$item", "foo" ] },
}
}
]
)

この操作は次の結果を返します。

{ "_id" : 1, "byteLocation" : "0" }
{ "_id" : 2, "byteLocation" : "4" }
{ "_id" : 3, "byteLocation" : "4" }
{ "_id" : 4, "byteLocation" : "-1" }
{ "_id" : 5, "byteLocation" : null }
{ "_id" : 6, "byteLocation" : null }

Tip

以下も参照してください。

戻る

$indexOfArray

項目一覧