Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
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 mientras se resuelva en un arreglo. Para obtener más información sobre expresiones, consulta Expresiones.

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

Si la expresión de arreglo no se resuelve como un arreglo o null ni hace referencia a un campo faltante, $indexOfArray devolvera un error.

<search value>

string

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

<start>

entero

opcional. Un entero, o un número que pueda representarse como enteros (como 2.0), que especifica la posición del índice inicial para la búsqueda. Puede ser cualquier expresión válida que resuelva a un número integral 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 de índice de finalización de la búsqueda es el final de la string.

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

$indexOfArray devuelve null:

  • Si <array expression> es nulo, o

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

$indexOfArray devuelve un error:

  • Si <array expression> no es un arreglo y no es null, o

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

$indexOfArray devuelve -1:

  • Si la <search expression> <expresión de búsqueda> no se encuentra en el arreglo, 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 arreglo para el valor 2 en cada arreglo de items, si se encuentra. Los índices de los arreglos empiezan en 0.

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

  • null para el índice si items no es un arreglo 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