$indexOfCP (agregação)
Nesta página
Definição
$indexOfCP
Pesquisa uma string para uma ocorrência de uma substring e retorna o8 ponto de UTF- índice (baseado em zero) da primeira ocorrência. Se a substring não for encontrada, retorna
-1
.$indexOfCP
tem a seguintesintaxe de expressão do operador :{ $indexOfCP: [ <string expression>, <substring expression>, <start>, <end> ] } CampoTipoDescrição<string>
string
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,$indexOfCP
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$indexOfCP
erro.<substring>
string
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>
inteiro
Opcional. Um inteiro ou um número que pode ser representado como inteiros (como 2.0), que especifica a posição inicial do índice para a pesquisa. Pode ser qualquer expressão válida que resolva um número integral não negativo.
Se não for especificado, a posição do índice inicial para a pesquisa é o início da string.
<end>
inteiro
Opcional. Um número inteiro, ou um número que pode ser representado como inteiros (como 2.0), 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$indexOfCP
o<end>
valor como<start>
o<end>
valor do índice em vez do valor.Se não for especificado, a posição do índice final para a pesquisa é o final da string.
Comportamento
Se <substring expression>
for encontrado várias vezes dentro de <string expression>
, então $indexOfCP
retornará o índice do primeiro <substring expression>
encontrado a partir da posição inicial do índice.
$indexOfCP
retornará null
:
Se
<string expression>
for nulo, ouSe
<string expression>
se referir a um campo inexistente no documento de entrada.
$indexOfCP
retorna um erro:
Se
<string expression>
não for uma string e não nulo, ouSe
<substring expression>
for nulo ou não for uma string ou se referir a um campo inexistente no documento de entrada, ouSe
<start>
ou<end>
for um número inteiro negativo (ou um valor que pode ser representado como um número inteiro negativo, como -5,0).
$indexOfCP
retornará -1
:
Se a substring não for encontrada no
<string expression>
, ouSe
<start>
for um número maior que<end>
, ouSe
<start>
for um número maior que o comprimento de bytes da string.
Exemplo | Resultados |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
| Erro |
|
|
|
|
|
|
|
|
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 $indexOfCP
para retornar o índice do ponto de código no qual a string foo
está localizada em cada string item
:
db.inventory.aggregate( [ { $project: { cpLocation: { $indexOfCP: [ "$item", "foo" ] }, } } ] )
A operação retorna os seguintes resultados:
{ "_id" : 1, "cpLocation" : "0" } { "_id" : 2, "cpLocation" : "3" } { "_id" : 3, "cpLocation" : "4" } { "_id" : 4, "cpLocation" : "-1" } { "_id" : 5, "cpLocation" : null } { "_id" : 6, "cpLocation" : null }