$indexOfBytes (バイト単位の部分文字列位置)

最終更新:2026-10-09

$indexOfBytes (バイト単位の部分文字列位置)

$indexOfBytes は部分文字列が最初に現れる位置を UTF-8 バイト単位のインデックスで返します。見つからなければ -1 です。任意の start と end で検索範囲を制限できます。マルチバイト文字があるとバイト位置とコードポイント位置はずれます。中国語は複数バイトを占めるため、バイト位置が文字の途中に当たることがあります。ユーザーが見るテキストには $indexOfCP を推奨します。引数のいずれかが null なら結果は null です。

カテゴリ文字列
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $indexOfBytes: [ <string-expression>, <substring>, <start>, <end> ] }

⚙️ パラメータ

文字列必須。元の文字列。
部分文字列必須。検索する部分文字列。
開始/終了任意の検索範囲(バイト単位)。

戻り値:バイトインデックス(0 始まり)。見つからない場合は -1、いずれかの引数が null の場合は null。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $indexOfBytes: ログメッセージ内の ERROR を検索
 db.logs.aggregate([
  { $project: { pos: { $indexOfBytes: [ '$msg', 'ERROR' ] } } }
])

出力:

{ "_id": 1, "pos": 12 }
{ "_id": 2, "pos": -1 }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q部分文字列が見つからない場合は?
A-1 です。
Q中国語テキストで位置はずれますか?
Aはい — 中国語 1 文字は 3 バイトです。中国語テキストには $indexOfCP を推奨します。
Q検索範囲を制限するには?
A3 番目と 4 番目の引数に start と end を渡します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%