$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>
stringPode 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 array 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 for resolvida para uma string ou
null
nem se referir a um campo ausente,$indexOfCP
retornará um erro.<substring>
stringPode 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>
inteiroOpcional. 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>
inteiroOpcional. Um inteiro ou um número que pode ser representado como inteiros (como 2.0), que especifica a posição final do índice para a pesquisa. Pode ser qualquer expressão válida que resolva um número integral não negativo. Se você especificar um valor de índice
<end>
, também deverá especificar um valor de índice<start>
; caso contrário,$indexOfCP
usará o valor<end>
como o valor de índice<start>
em vez do valor<end>
.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 |
---|---|
{ $indexOfCP: [ "cafeteria", "e" ] } | 3 |
{ $indexOfCP: [ "cafétéria", "é" ] } | 3 |
{ $indexOfCP: [ "cafétéria", "e" ] } | -1 |
{ $indexOfCP: [ "cafétéria", "t" ] } | 4 |
{ $indexOfCP: [ "foo.bar.fi", ".", 5 ] } | 7 |
{ $indexOfCP: [ "vanilla", "ll", 0, 2 ] } | -1 |
{ $indexOfCP: [ "vanilla", "ll", -1 ] } | Erro |
{ $indexOfCP: [ "vanilla", "ll", 12 ] } | -1 |
{ $indexOfCP: [ "vanilla", "ll", 5, 2 ] } | -1 |
{ $indexOfCP: [ "vanilla", "nilla", 3 ] } | -1 |
{ $indexOfCP: [ null, "foo" ] } | null |
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 }