$strLenCP (Comprimento em Code Points)
Última atualização: 2026-10-09
$strLenCP (Comprimento em Code Points)
$strLenCP retorna o número de code points Unicode em uma string — essencialmente a contagem de caracteres que as pessoas percebem. Chinês, japonês e emoji contam como 1 cada, tornando-o adequado para limites de apelidos ou resumos de texto. Diferente do $strLenBytes, que conta bytes, caracteres multibyte não inflam o resultado. Observe que caracteres compostos (ex.: emoji com tom de pele) podem ocupar vários code points.
| Categoria | String |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $strLenCP: <expressão de string> }
⚙️ Parâmetros
| string | Obrigatório; a expressão de string a medir. |
|---|
Retorno:O comprimento em pontos de código como inteiro.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $strLenCP: validar o comprimento do apelido
db.users.aggregate([
{ $project: { len: { $strLenCP: '$nickname' } } }
])
Saída:
{ "_id": 1, "len": 4 }
{ "_id": 2, "len": 2 }
📌 Notas
- Um caractere chinês ou emoji conta como 1 code point
- Caracteres compostos (ex.: emoji com tom de pele) podem ocupar vários code points
- Para bytes de armazenamento, use $strLenBytes
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual usar para um limite de apelido de 20 caracteres?
AUse $strLenCP — ele conta caracteres.
QQual é a distância para $strLenBytes?
ACada caractere chinês difere em 2 bytes.
QQuanto é um emoji?
AEmojis simples contam como 1; compostos podem contar como 2 ou mais.