sql >> Databasteknik >  >> NoSQL >> MongoDB

Få index för givet element i arrayfält i MongoDB

Från och med MongoDB version 3.4 kan vi använda $indexOfArray operatorn för att returnera indexet där ett givet element kan hittas i arrayen.

$indexOfArray tar tre argument. Det första är namnet på arrayfältet med prefixet $ tecken.

Det andra är elementet och det tredje valfria är indexet att starta sökningen på. $indexOfArray returnerar det första indexet där elementet hittas om indexet att starta sökningen på inte är specificerat.

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. Mongoosepopulation vs aggregat

  2. Hur återställer man sig från en MongoDB-återställning?

  3. Designa en applikation med Redis som datalager. Vad? Varför?

  4. Importera csv till mongodb med PHP-kod