$indexOfBytes (Índice de Substring em Bytes)
Última atualização: 2026-10-09
$indexOfBytes (Índice de Substring em Bytes)
$indexOfBytes retorna o índice em bytes UTF-8 da primeira ocorrência de uma substring, ou -1 quando não encontrada. start e end opcionais delimitam a janela de busca. Índices em bytes e em code points divergem com caracteres multibyte: o chinês ocupa vários bytes, então um índice em bytes pode cair no meio de um caractere — prefira $indexOfCP para texto visível ao usuário. Qualquer argumento null resulta em null.
| Categoria | String |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $indexOfBytes: [ <expressão de string>, <substring>, <início>, <fim> ] }
⚙️ Parâmetros
| string | Obrigatório; a string de origem. |
|---|---|
| substring | Obrigatório; a substring a localizar. |
| início/fim | Janela de pesquisa opcional, em bytes. |
Retorno:O índice de byte (base zero); -1 quando não encontrado; null se qualquer argumento for null.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $indexOfBytes: localizar ERROR nas mensagens de log
db.logs.aggregate([
{ $project: { pos: { $indexOfBytes: [ '$msg', 'ERROR' ] } } }
])
Saída:
{ "_id": 1, "pos": 12 }
{ "_id": 2, "pos": -1 }
📌 Notas
- Baseado em zero; -1 quando não encontrada
- Índices em bytes diferem de índices em caracteres para chinês — $indexOfCP é mais intuitivo
- start/end também são contados em bytes
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO que é retornado quando a substring está ausente?
A-1.
QAs posições se deslocam com texto chinês?
ASim — um caractere chinês tem 3 bytes; prefira $indexOfCP para texto chinês.
QComo limitar o intervalo de busca?
APasse o 3º e o 4º argumentos como start e end.