MongoDBバージョン3.4以降では、 $indexOfArrayを使用できます。コード>
配列内で特定の要素を見つけることができるインデックスを返す演算子。
$ indexOfArray
3つの引数を取ります。 1つ目は、接頭辞 $
が付いた配列フィールドの名前です。 サイン。
2番目は要素で、3番目のオプションは検索を開始するインデックスです。 $ indexOfArray
検索を開始するインデックスが指定されていない場合に、要素が見つかった最初のインデックスを返します。
デモ:
> 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 }