sql >> Base de Datos >  >> NoSQL >> MongoDB

Obtenga el índice del elemento dado en el campo de matriz en MongoDB

A partir de la versión 3.4 de MongoDB, podemos usar el $indexOfArray operador para devolver el índice en el que se puede encontrar un elemento dado en la matriz.

$indexOfArray toma tres argumentos. El primero es el nombre del campo de matriz con el prefijo $ firmar.

El segundo es el elemento y el tercero opcional es el índice para iniciar la búsqueda. $indexOfArray devuelve el primer índice en el que se encuentra el elemento si no se especifica el índice para iniciar la búsqueda.

Demostración:

> db.collection.insertOne( { "_id" : 123, "food": [ "apple", "mango", "banana", "mango" ] } )
{ "acknowledged" : true, "insertedId" : 123 }
> db.collection.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$food", "mango" ] } } } ] )
{ "_id" : 123, "matchedIndex" : 1 }
> db.collection.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$food", "mango", 2 ] } } } ] )
{ "_id" : 123, "matchedIndex" : 3 }
> db.collection.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$food", "apricot" ] } } } ]  )
{ "_id" : 123, "matchedIndex" : -1 }