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

Få indeks for givet element i matrixfelt i MongoDB

Fra MongoDB version 3.4 kan vi bruge $indexOfArray operator for at returnere det indeks, hvor et givet element kan findes i arrayet.

$indexOfArray tager tre argumenter. Den første er navnet på matrixfeltet med præfikset $ underskrive.

Det andet er elementet, og det tredje valgfrit er indekset for at starte søgningen på. $indexOfArray returnerer det første indeks, hvor elementet er fundet, hvis indekset, der skal starte søgningen ved, ikke er angivet.

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 }


  1. Projekt et element returneret med $arrayElemAt

  2. mongodb aggregeringsramme - generer _id fra funktion

  3. Mongo i testcontainere

  4. returforespørgsel baseret på dato