이를 위해 $indexOfArray 연산자를 사용할 수 있습니다. 문서로 컬렉션을 만들자 −
>db.getIndexDemo.insertOne({"InstructorName":"Chris","InstructorSubject":["MongoDB","MySQL","Java","C++"]}); { "acknowledged" : true, "insertedId" : ObjectId("5cbd5251de8cc557214c0df8") }
find() 메서드를 사용하여 컬렉션의 모든 문서 표시 -
> db.getIndexDemo.find().pretty();
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5cbd5251de8cc557214c0df8"), "InstructorName" : "Chris", "InstructorSubject" : [ "MongoDB", "MySQL", "Java", "C++" ] }
다음은 MongoDB의 배열 필드에서 주어진 요소의 인덱스를 가져오는 쿼리입니다 -
> db.getIndexDemo.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$InstructorSubject", "MongoDB" ] } } } ] );
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5cbd5251de8cc557214c0df8"), "matchedIndex" : 0 }
다음은 MongoDB의 배열 필드에서 다른 요소의 인덱스를 가져오는 쿼리입니다 -
> db.getIndexDemo.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$InstructorSubject", "C++" ] } } } ] );
이것은 다음과 같은 출력을 생성합니다 -
{ "_id" : ObjectId("5cbd5251de8cc557214c0df8"), "matchedIndex" : 3 }
참고 - 우리가 알다시피, 대부분의 언어에서 배열 인덱스는 0에서 시작하며 배열의 첫 번째 요소는 0 인덱스를 갖고 마지막 요소는 (n-1) 인덱스를 갖습니다. 여기서 n은 배열 요소의 수입니다.