MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenir l'index de l'élément donné dans le champ de tableau dans MongoDB

À partir de la version 3.4 de MongoDB, nous pouvons utiliser le $indexOfArray opérateur pour renvoyer l'index auquel un élément donné peut être trouvé dans le tableau.

$indexOfArray prend trois arguments. Le premier est le nom du champ tableau préfixé par $ signe.

Le second est l'élément et le troisième facultatif est l'index à partir duquel commencer la recherche. $indexOfArray renvoie le premier index auquel l'élément est trouvé si l'index de départ de la recherche n'est pas spécifié.

Démo :

> 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 }