Docs Menu
Docs Home
/ /

$indexOfArray (operador de expresión)

$indexOfArray

Busca en un arreglo una ocurrencia de un valor especificado y devuelve el índice de la primera ocurrencia. Los índices de arreglo comienzan en cero.

$indexOfArray tiene lo siguiente Sintaxis de expresión del operador:

{ $indexOfArray: [ <array expression>, <search expression>, <start>, <end> ] }
Campo
Tipo
Descripción

<array>

arreglo

Puede ser cualquier expresión válida siempre que se resuelva en un array. Para más información sobre expresiones, consulte Expresiones.

Si la expresión de matriz se resuelve en un valor de null o hace referencia a un campo que falta, $indexOfArray nulldevuelve.

Si la expresión de matriz no se resuelve en una matriz o null ni hace referencia a un campo faltante, devuelve un$indexOfArray error.

<search value>

string

Puede ser cualquier expresión válida. Para más información sobre expresiones, consulte Expresiones.

<start>

entero

Opcional. Un entero o un número que se pueda representar como enteros 2.0 (como), que especifica la posición inicial del índice de la búsqueda. Puede ser cualquier expresión válida que se resuelva en un número entero no negativo.

Si no se especifica, la posición inicial del índice para la búsqueda es el comienzo de la string.

<end>

entero

Opcional. Un entero, o un número que se pueda representar como enteros 2.0 (como), que especifica la posición del índice final de la búsqueda. Puede ser cualquier expresión válida que se resuelva en un número entero no negativo. Si especifica un <end> valor de índice, también debe especificar un <start> valor de índice; de lo contrario, usa$indexOfArray el <end> valor como <start> valor de índice en lugar del <end> valor.

Si no se especifica, la posición del índice final para la búsqueda es el final de la cadena.

Si <search expression> se encuentra varias veces dentro <array expression> de, entonces devuelve el índice del $indexOfArray primer <search expression> desde la posición del índice inicial.

$indexOfArray nulldevuelve:

  • Si <array expression> es nulo, o

  • Si <array expression> hace referencia a un campo inexistente en el documento de entrada.

$indexOfArray devuelve un error:

  • Si <array expression> no es una matriz y no es nulo, o

  • Si <start> o <end> es un entero negativo (o un valor que puede representarse como un entero negativo, como -5.0).

$indexOfArray -1devuelve:

  • Si la <search expression> <expresión de búsqueda> no se encuentra en la matriz, o

  • Si <start> es un número mayor que <end>, o

  • Si <start> es un número mayor que la longitud de la matriz.

Ejemplo
Resultados

{ $indexOfArray: [ [ "a", "abc" ], "a" ] }

0

{ $indexOfArray: [ [ "a", "abc", "de", ["de"] ], ["de"] ] }

3

{ $indexOfArray: [ [ 1, 2 ], 5 ] }

-1

{ $indexOfArray: [ [ 1, 2, 3 ], [1, 2] ] }

-1

{ $indexOfArray: [ [ 10, 9, 9, 8, 9 ], 9, 3 ] }

4

{ $indexOfArray: [ [ "a", "abc", "b" ], "b", 0, 1 ] }

-1

{ $indexOfArray: [ [ "a", "abc", "b" ], "b", 1, 0 ] }

-1

{ $indexOfArray: [ [ "a", "abc", "b" ], "b", 20 ] }

-1

{ $indexOfArray: [ [ null, null, null ], null ] }

0

{ $indexOfArray: [ null, "foo" ] }

null

{ $indexOfArray: [ "foo", "foo" ] }

Error

El ejemplo utiliza esta colección inventory:

db.inventory.insertMany( [
{ _id: 0, items: [ "one", "two", "three" ] },
{ _id: 1, items: [ 1, 2, 3 ] },
{ _id: 2, items: [ 1, 2, 3, 2 ] },
{ _id: 3, items: [ null, null, 2 ] },
{ _id: 4, items: [ 2, null, null, 2 ] },
{ _id: 5, items: null },
{ _id: 6, amount: 3 }
] )

El siguiente ejemplo utiliza $indexOfArray para buscar 2 en el arreglo items:

db.inventory.aggregate( [ {
$project: {
index: { $indexOfArray: [ "$items", 2 ] }
}
} ] )

El ejemplo devuelve:

  • El primer índice de matriz para el valor 2 en cada matriz items, si se encuentra. Los índices de matriz comienzan en 0.

  • -1 para el índice si 2 no está en la matriz items.

  • null para el índice si items no es una matriz o items no existe.

Ejemplo de salida:

[
{ _id: 0, index: -1 },
{ _id: 1, index: 1 },
{ _id: 2, index: 1 },
{ _id: 3, index: 2 },
{ _id: 4, index: 0 },
{ _id: 5, index: null },
{ _id: 6, index: null }
]

Tip

Volver

$in

En esta página