MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ottieni l'indice di un determinato elemento nel campo dell'array in MongoDB

A partire da MongoDB versione 3.4 possiamo utilizzare il $indexOfArray operatore per restituire l'indice in cui è possibile trovare un determinato elemento nell'array.

$indexOfArray prende tre argomenti. Il primo è il nome del campo dell'array preceduto da $ firmare.

Il secondo è l'elemento e il terzo opzionale è l'indice da cui iniziare la ricerca. $indexOfArray restituisce il primo indice in cui si trova l'elemento se non è specificato l'indice da cui iniziare la ricerca.

Demo:

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