$substr (Substring)
Última atualização: 2026-10-09
$substr (Substring)
$substr extrai uma substring começando em uma posição dada com um comprimento dado. Desde o MongoDB 3.4, $substr é um alias de $substrCP, contando posições em code points Unicode (aproximadamente caracteres), então é seguro para texto multibyte como chinês e emoji — sem caracteres quebrados. start é baseado em zero; um start negativo retorna uma string vazia, e um comprimento negativo retorna tudo a partir de start.
| Categoria | String |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $substr: [ <expressão de string>, <início>, <comprimento> ] }
⚙️ Parâmetros
| string | Obrigatório; a expressão de string de origem. |
|---|---|
| posição inicial | Inteiro obrigatório, base zero; negativo resulta em uma string vazia. |
| comprimento | Inteiro obrigatório; negativo retorna de start até o fim. |
Retorno:A substring extraída; null se qualquer argumento for null.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $substr: primeiros 3 dígitos de números de telefone
db.users.aggregate([
{ $project: { code: { $substr: [ '$phone', 0, 3 ] } } }
])
Saída:
{ "_id": 1, "code": "138" }
{ "_id": 2, "code": "139" }
📌 Notas
- Alias de $substrCP desde 3.4 — baseado em code points, seguro para multibyte
- Start negativo resulta em string vazia; comprimento negativo resulta no restante
- Para cortes baseados em bytes UTF-8, use $substrBytes
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
Q$substr e $substrCP são iguais?
ADesde a 3.4, $substr é um alias de $substrCP — comportamento idêntico.
QCortar chinês causa texto corrompido?
ANão — ele conta code points, então o chinês é seguro.
QO start pode ser negativo?
ASim — um start negativo retorna uma string vazia.