Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 배열 일치 조회하기 – $all 연산자 완벽 가이드

MongoDB에서 배열에 포함된 여러 요소를 동시에 만족하는 문서를 찾고 싶다면 $all 연산자를 사용하면 됩니다.

$all 연산자란?

$all 연산자는 특정 필드의 값이 지정한 모든 요소를 포함하는 배열인 문서만 선택하는 쿼리 연산자입니다. 예를 들어, 과목 목록 배열에서 'MongoDB'와 'C++'가 모두 포함된 문서만 조회할 수 있습니다.

테스트 컬렉션 생성 및 데이터 삽입

먼저 인덱스를 생성하고 샘플 문서들을 삽입해 보겠습니다.

> db.demo668.createIndex({"ListOfSubject":1});
{
    "createdCollectionAutomatically" : true,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}
> db.demo668.insert({"ListOfSubject":["MySQL","Java","C"]});
WriteResult({ "nInserted" : 1 })
> db.demo668.insert({"ListOfSubject":["MongoDB","Python","C++"]});
WriteResult({ "nInserted" : 1 })
> db.demo668.insert({"ListOfSubject":["C#","Spring","Hibernate","MongoDB"]});
WriteResult({ "nInserted" : 1 })

전체 문서 확인하기

find() 메서드를 사용해 컬렉션의 모든 문서를 조회합니다.

> db.demo668.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5ea311df04263e90dac943d6"), "ListOfSubject" : [ "MySQL", "Java", "C" ] }
{ "_id" : ObjectId("5ea311e004263e90dac943d7"), "ListOfSubject" : [ "MongoDB", "Python", "C++" ] }
{ "_id" : ObjectId("5ea311e104263e90dac943d8"), "ListOfSubject" : [ "C#", "Spring", "Hibernate", "MongoDB" ] }

$all로 배열 일치 조회하기

이제 'MongoDB'와 'C++' 두 요소를 모두 포함하는 문서를 찾는 쿼리입니다.

> db.demo668.find({"ListOfSubject":{ $all:["MongoDB","C++"]}});

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5ea311e004263e90dac943d7"), "ListOfSubject" : [ "MongoDB", "Python", "C++" ] }

정리

$all 연산자는 배열 필드에서 여러 조건을 동시에 만족하는 문서를 검색할 때 유용합니다. 세 번째 문서에는 'MongoDB'가 포함되어 있지만 'C++'가 없기 때문에 결과에서 제외되었고, 두 요소를 모두 갖춘 두 번째 문서만 반환된 것을 확인할 수 있습니다. 참고로 $all은 배열 내 요소의 순서나 개수와 무관하게, 지정한 요소들이 모두 존재하기만 하면 해당 문서를 매칭합니다.