$substrBytes (Substring por Bytes)
Última atualização: 2026-10-09
$substrBytes (Substring por Bytes)
$substrBytes extrai uma substring por posições de bytes UTF-8; tanto start quanto length contam bytes. Serve para texto puramente ASCII (onde bytes equivalem a caracteres) ou casos que exigem controle exato de bytes. Cuidado: com caracteres multibyte como chinês, um limite de byte pode cair no meio de um caractere e corromper a saída — nesse caso, mude para $substrCP baseado em code points. Start negativo resulta em string vazia; length negativo resulta no restante.
| Categoria | String |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $substrBytes: [ <expressão de string>, <início em bytes>, <comprimento em bytes> ] }
⚙️ Parâmetros
| string | Obrigatório; a expressão de string de origem. |
|---|---|
| posição inicial em bytes | Inteiro obrigatório em bytes, base zero. |
| comprimento em bytes | Inteiro obrigatório em bytes. |
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):
// $substrBytes: primeiros 10 bytes do conteúdo
db.files.aggregate([
{ $project: { head: { $substrBytes: [ '$content', 0, 10 ] } } }
])
Saída:
{ "_id": 1, "head": "hello wor" }
{ "_id": 2, "head": "MongoDB su" }
📌 Notas
- Um caractere chinês ocupa 3 bytes UTF-8; o corte por bytes pode dividir um caractere
- Start negativo resulta em string vazia; length negativo resulta no restante
- Resultados idênticos a $substrCP para ASCII puro
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QCortar por bytes pode corromper chinês?
APossivelmente — um caractere chinês tem 3 bytes, e um limite ruim o corrompe; prefira $substrCP.
QQuando os resultados coincidem com $substrCP?
AQuando a string é ASCII puro.
QPara que serve?
ATexto puramente ASCII ou orçamento exato de bytes.