$strLenBytes (バイト長)
最終更新:2026-10-09
$strLenBytes (バイト長)
$strLenBytes は文字列の UTF-8 バイト長を返します。ストレージ見積りやフィールドサイズ制限の定番演算子です。純粋な ASCII ではバイト数と文字数が一致しますが、中国語は 1 文字 3 バイト、絵文字は通常 4 バイトです。文字列のみを受け付け、他の型はエラーになるため、先に $toString で変換してください。結果はコードポイント基準の $strLenCP と異なることがあります。
| カテゴリ | 文字列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $strLenBytes: <string-expression> }
⚙️ パラメータ
| 文字列 | 必須。計測する文字列式。 |
|---|
戻り値:UTF-8 バイト長を整数で返します。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $strLenBytes: 記事タイトルのバイトサイズ
db.articles.aggregate([
{ $project: { sizeBytes: { $strLenBytes: '$title' } } }
])
出力:
{ "_id": 1, "sizeBytes": 42 }
{ "_id": 2, "sizeBytes": 36 }
📌 注意事項
- 中国語は 1 文字 3 バイト — 文字数ではない
- 文字列以外の入力はエラー — $toString で変換する
- マルチバイト文字があると $strLenCP と結果が異なる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q中国語 1 文字は何バイトですか?
AUTF-8 では 3 バイトです。
Q$strLenCP と異なるのはいつですか?
A中国語や絵文字があると異なります。純粋な ASCII では一致します。
Qフィールドサイズ制限に使えますか?
Aはい — $match と組み合わせて制限超過のレコードをフィルタできます。