$split (文字列の分割)
最終更新:2026-10-09
$split (文字列の分割)
$split は区切り文字で文字列を部分文字列の配列に分割します。CSV 的なテキストやタグリスト、パスの分解に欠かせない演算子です。区切り文字は空でない文字列である必要があり、空の区切り文字を渡すとコードポイント単位で分割します。$arrayElemAt や $size などの配列演算子との相性も良いです。引数のいずれかが null または欠落していると結果は null になります。
| カテゴリ | 文字列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $split: [ <string-expression>, <delimiter> ] }
⚙️ パラメータ
| 文字列 | 必須。分割する文字列または式。 |
|---|---|
| 区切り文字 | 必須、空でないこと。空文字列の場合はコードポイント単位で分割します。 |
戻り値:部分文字列の配列。いずれかの引数が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $split: カンマ区切りのタグを配列に分割
db.products.aggregate([
{ $project: { tags: { $split: [ '$tagStr', ',' ] } } }
])
出力:
{ "_id": 1, "tags": [ "sale", "new", "hot" ] }
{ "_id": 2, "tags": [ "featured" ] }
📌 注意事項
- 空の区切り文字はコードポイント単位で分割する(文字ごとに 1 要素)
- 区切り文字が 1 回も現れない場合、配列には元の文字列が 1 つ入る
- null・欠落の引数は null になる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q区切り文字を空文字列にできますか?
Aはい — 空文字列はコードポイント単位で分割します。
Q分割後に最初の要素を取得するには?
A$arrayElemAt をインデックス 0 で使います。
Q区切り文字が現れない場合は?
A元の文字列だけが入った配列になります。