MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rufen Sie den Index des angegebenen Elements im Array-Feld in MongoDB ab

Ab MongoDB Version 3.4 können wir den $indexOfArray -Operator, um den Index zurückzugeben, an dem ein bestimmtes Element im Array gefunden werden kann.

$indexOfArray nimmt drei Argumente. Der erste ist der Name des Array-Felds mit dem Präfix $ unterschreiben.

Das zweite ist das Element und das dritte optional ist der Index, bei dem die Suche beginnen soll. $indexOfArray gibt den ersten Index zurück, an dem das Element gefunden wird, wenn der Index, an dem die Suche beginnen soll, nicht angegeben ist.

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 }