MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Obter índice de determinado elemento no campo de matriz no MongoDB


A partir da versão 3.4 do MongoDB, podemos usar o $indexOfArray operador para retornar o índice no qual um determinado elemento pode ser encontrado na matriz.

$indexOfArray recebe três argumentos. O primeiro é o nome do campo array prefixado com $ sinal.

O segundo é o elemento e o terceiro opcional é o índice para iniciar a pesquisa. $indexOfArray retorna o primeiro índice no qual o elemento é encontrado se o índice para iniciar a pesquisa não for especificado.

Demonstração:
> 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 }