sql >> Databáze >  >> NoSQL >> MongoDB

Získejte index daného prvku v poli pole v MongoDB

Počínaje verzí MongoDB 3.4 můžeme použít $indexOfArray operátor vrátí index, na kterém lze daný prvek v poli nalézt.

$indexOfArray má tři argumenty. První je název pole pole s předponou $ podepsat.

Druhým prvkem je prvek a třetím volitelným indexem, na kterém má vyhledávání začít. $indexOfArray vrátí první index, na kterém je prvek nalezen, pokud není zadán index, na kterém má vyhledávání začít.

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. Proč konektor Mongo Spark vrací pro dotaz různé a nesprávné počty?

  2. Jak najdu řetězec v poli dokumentu MongoDB a promítnu hodnotu pole v operaci hledání?

  3. Meteor, MongoDB získávají část pole prostřednictvím předplatného

  4. Jak získat všechny čekající úlohy ve frontě laravel na redis?