MongoDB에서 배열 필드의 특정 인덱스에 저장된 값이 true인지 확인하려면 점(.) 표기법(dot notation)을 사용하면 됩니다. 이 글에서는 배열 내 특정 위치의 불리언 값을 조회하는 방법을 단계별로 살펴보겠습니다.
1. 테스트용 컬렉션 생성하기
먼저 예제로 사용할 컬렉션을 만들고 문서를 하나 삽입합니다. 아래 예시에서는 결혼 여부를 나타내는 불리언 값들의 배열을 가진 문서를 생성합니다.
> db.containsTrueValueDemo.insertOne({"IsMarried":[true,false,true,true,true,true,false,true,false,false,true]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd5039c2cba06f46efe9ef5")
}2. 삽입된 문서 확인하기
find() 메서드를 사용해 컬렉션의 모든 문서를 조회합니다. pretty() 메서드를 함께 사용하면 결과를 보기 좋게 정렬된 형태로 출력할 수 있습니다.
> db.containsTrueValueDemo.find().pretty();
위 쿼리는 다음과 같은 결과를 출력합니다.
{
"_id" : ObjectId("5cd5039c2cba06f46efe9ef5"),
"IsMarried" : [
true,
false,
true,
true,
true,
true,
false,
true,
false,
false,
true
]
}3. 특정 인덱스(n)의 'true' 값 조회하기
배열의 특정 위치에 있는 값이 true인지 확인하려면 점 표기법으로 필드명.인덱스번호 형식을 지정하면 됩니다. MongoDB 배열의 인덱스는 0부터 시작한다는 점에 유의하세요.
예를 들어, IsMarried 배열의 3번째 요소(인덱스 2)가 true인 문서를 찾으려면 다음과 같이 작성합니다.
> db.containsTrueValueDemo.find({'IsMarried.2' : true});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5cd5039c2cba06f46efe9ef5"), "IsMarried" : [ true, false, true, true, true, true, false, true, false, false, true ] }4. $and 연산자로 여러 인덱스 동시에 조건 걸기
여러 개의 인덱스에 대해 동시에 조건을 적용하고 싶다면 $and 연산자를 활용할 수 있습니다. 아래 예시는 인덱스 0과 인덱스 2의 값이 모두 true인 문서를 조회하는 쿼리입니다.
> db.containsTrueValueDemo.find({$and : [ {'IsMarried.0' : true}, {'IsMarried.2' : true} ] } );두 조건을 모두 만족하므로 해당 문서가 정상적으로 반환됩니다.
{ "_id" : ObjectId("5cd5039c2cba06f46efe9ef5"), "IsMarried" : [ true, false, true, true, true, true, false, true, false, false, true ] }정리
MongoDB에서 배열의 특정 인덱스 값을 조회하는 핵심 포인트는 다음과 같습니다.
- 점 표기법:
'필드명.인덱스'형식으로 배열의 특정 위치에 직접 접근할 수 있습니다. - 인덱스는 0부터 시작: 첫 번째 요소는 인덱스 0입니다.
- $and 연산자: 여러 인덱스에 복수의 조건을 동시에 적용할 때 유용합니다.
이 방식은 불리언뿐만 아니라 문자열, 숫자 등 어떤 데이터 타입의 배열 요소에도 동일하게 적용할 수 있어 실무에서 매우 유용하게 활용됩니다.