$indexOfBytes (agregação)
Nesta página
Definição
$indexOfBytes
Pesquisa uma string para uma ocorrência de uma substring e retorna o índice de bytes UTF-8 (com base em zero) da primeira ocorrência. Se a substring não for encontrada, retorna
-1
.$indexOfBytes
tem a seguintesintaxe de expressão do operador :{ $indexOfBytes: [ <string expression>, <substring expression>, <start>, <end> ] } OperandoDescrição<string expression>
Pode ser qualquer expressão válida desde que resolva para uma string. Para obter mais informações sobre expressões, consulte Operadores de Expressão.
Se a expressão de string for resolvida com um valor de
null
ou se referir a um campo ausente,$indexOfBytes
retornaránull
.Se a expressão de string não se resolver em uma string ou
null
nem se referir a um campo ausente, retornará um$indexOfBytes
erro.<substring expression>
Pode ser qualquer expressão válida desde que resolva para uma string. Para obter mais informações sobre expressões, consulte Operadores de Expressão.
<start>
Opcional Um número integral que especifica a posição do índice inicial para a Atlas Search. Pode ser qualquer expressão válida que resolva um número integral não negativo.
<end>
Opcional Um número integral que especifica a posição do índice final para a pesquisa. Pode ser qualquer expressão válida que resolva um número integral não negativo. Se você especificar um
<end>
valor de índice, também deverá especificar um<start>
valor de índice; caso contrário, utiliza$indexOfBytes
o<end>
valor como o<start>
valor do índice em vez do<end>
valor.
Comportamento
Se
<string expression>
for nulo,$indexOfBytes
retornaránull
.Se
$indexOfBytes
for chamado em um campo que não existe no documento,$indexOfBytes
retornaránull
.Se
<string expression>
não for uma string e não nulo,$indexOfBytes
retornará um erro.Se
<substring expression>
for nulo,$indexOfBytes
retornará um erro.Se
<start>
ou<end>
for um número negativo,$indexOfBytes
retornará um erro.Se
<start>
for um número maior que<end>
,$indexOfBytes
retornará-1
.Se
<start>
for um número maior que o comprimento de bytes da string,$indexOfBytes
retornará-1
.Se
<start>
ou<end>
receber um valor que não seja um número inteiro,$indexOfBytes
retornará um erro.Se o
<substring expression>
for encontrado várias vezes dentro do<string expression>
, então$indexOfBytes
retornará o índice do primeiro<substring expression>
encontrado.
Alguns exemplos curtos para destacar comportamentos diferentes:
Exemplo | Resultados |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Exemplos
Considere uma coleção inventory
com os seguintes documentos:
{ "_id" : 1, "item" : "foo" } { "_id" : 2, "item" : "fóofoo" } { "_id" : 3, "item" : "the foo bar" } { "_id" : 4, "item" : "hello world fóo" } { "_id" : 5, "item" : null } { "_id" : 6, "amount" : 3 }
A seguinte operação utiliza o operador $indexOfBytes
para recuperar os índices nos quais a string foo
está localizada em cada item:
db.inventory.aggregate( [ { $project: { byteLocation: { $indexOfBytes: [ "$item", "foo" ] }, } } ] )
A operação retorna os seguintes resultados:
{ "_id" : 1, "byteLocation" : "0" } { "_id" : 2, "byteLocation" : "4" } { "_id" : 3, "byteLocation" : "4" } { "_id" : 4, "byteLocation" : "-1" } { "_id" : 5, "byteLocation" : null } { "_id" : 6, "byteLocation" : null }