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

MongoDB 배열 필드에서 모든 요소 일치시키는 방법 – $all 연산자 완벽 가이드

MongoDB $all 연산자란?

MongoDB에서 배열 필드의 값이 지정한 모든 요소를 포함하는 문서만 조회하려면 $all 연산자를 사용하면 됩니다. $all 연산자는 필드의 값이 배열이면서 해당 배열에 명시한 요소들이 전부 들어 있는 문서만 선택합니다. 하나라도 빠진 문서는 결과에서 제외되므로, 정확한 조건 매칭이 필요할 때 유용합니다.

실제 동작을 이해하기 위해 예제 컬렉션을 만들어 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성 및 문서 삽입

먼저 demo695라는 컬렉션을 만들고 배열 값을 가진 문서 두 개를 삽입합니다.

> db.demo695.insertOne({"ListOfValues":[100,200,500,800]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea6d4c4551299a9f98c938f")
}
> db.demo695.insertOne({"ListOfValues":[1000,200,4000]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ea6d4cf551299a9f98c9390")
}

2. find() 메서드로 전체 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo695.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5ea6d4c4551299a9f98c938f"), "ListOfValues" : [ 100, 200, 500, 800 ] }
{ "_id" : ObjectId("5ea6d4cf551299a9f98c9390"), "ListOfValues" : [ 1000, 200, 4000 ] }

3. $all 연산자로 배열의 모든 요소 일치시키기

이제 배열 필드 ListOfValues가 [1000, 200, 4000]을 모두 포함하는 문서를 찾아보겠습니다. 아래와 같이 $all 연산자를 사용하면 됩니다.

> db.demo695.find({"ListOfValues":{$all:[1000,200,4000]}});

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

{ "_id" : ObjectId("5ea6d4cf551299a9f98c9390"), "ListOfValues" : [ 1000, 200, 4000 ] }

정리

$all 연산자는 배열 필드에 지정한 요소들이 모두 존재하는 경우에만 해당 문서를 반환합니다. 위 예제에서 첫 번째 문서([100, 200, 500, 800])는 조건에 맞는 값이 없어 결과에서 제외되었고, 세 요소를 모두 포함하는 두 번째 문서만 조회되었습니다. 참고로 $all은 배열 내 요소의 순서나 추가적인 다른 값의 존재 여부는 상관하지 않으며, 오직 지정한 요소들의 포함 여부만 검사한다는 점도 기억해 두면 좋습니다.