sql >> Database >  >> NoSQL >> MongoDB

Krijg index van gegeven element in arrayveld in MongoDB

Vanaf MongoDB versie 3.4 kunnen we de $indexOfArray operator om de index te retourneren waarop een bepaald element in de array kan worden gevonden.

$indexOfArray heeft drie argumenten. De eerste is de naam van het arrayveld voorafgegaan door $ teken.

De tweede is het element en de derde optionele is de index om de zoekopdracht te starten. $indexOfArray retourneert de eerste index waarop het element wordt gevonden als de index waarop de zoekopdracht moet beginnen, niet is opgegeven.

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. Huidige topologie ondersteunt geen sessie

  2. MongoDB bind_ip-fout:bind() is mislukt errno:99 Kan het gevraagde adres voor socket niet toewijzen

  3. Goede manier om MongoError af te handelen:serverinstantiepool is vernietigd

  4. Opmerking:Ongedefinieerde eigenschap:MongoId