$strLenCP (コードポイント長)
最終更新:2026-10-09
$strLenCP (コードポイント長)
$strLenCP は文字列の Unicode コードポイント数を返します。実質、人が認識する文字数です。中国語・日本語・絵文字もそれぞれ 1 として数えるため、ニックネームの文字数制限やテキスト要約に適しています。バイト数で数える $strLenBytes と違い、マルチバイト文字で結果が膨らむことはありません。なお、合成文字(肌色の絵文字など)は複数のコードポイントにまたがる場合があります。
| カテゴリ | 文字列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $strLenCP: <string-expression> }
⚙️ パラメータ
| 文字列 | 必須。計測する文字列式。 |
|---|
戻り値:コードポイント長を整数で返します。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $strLenCP: ニックネームの長さを検証
db.users.aggregate([
{ $project: { len: { $strLenCP: '$nickname' } } }
])
出力:
{ "_id": 1, "len": 4 }
{ "_id": 2, "len": 2 }
📌 注意事項
- 中国語 1 文字や絵文字 1 つは 1 コードポイントとして数える
- 合成文字(肌色の絵文字など)は複数のコードポイントにまたがることがある
- 保存バイト数が要るなら $strLenBytes を使う
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q20 文字のニックネーム制限にはどちらを使いますか?
A$strLenCP です — 文字数で数えます。
Q$strLenBytes との差は?
A中国語 1 文字につき 2 バイトの差があります。
Q絵文字はいくつと数えますか?
A単純な絵文字は 1 つ、合成絵文字は 2 つ以上になる場合があります。