MongoDB $in 연산자로 배열 내 특정 값 확인하기
MongoDB에서 특정 값이 배열 필드에 포함되어 있는지 확인하려면 $in 연산자를 사용하면 됩니다. 이 연산자는 지정한 값 중 하나라도 배열 안에 존재하는 문서를 손쉽게 조회할 수 있게 해줍니다.
1. 샘플 컬렉션 생성
먼저 테스트에 사용할 문서들이 담긴 컬렉션을 생성해 보겠습니다.
> db.testInArray.insertOne({"ListOfNumbers":[10,56,78,90,32]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e04d42df5e889d7a519950d")
}
> db.testInArray.insertOne({"ListOfNumbers":[56,78,91,100]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e04d588f5e889d7a519950e")
}숫자 배열을 가진 두 개의 문서가 성공적으로 삽입되었습니다.
2. 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.testInArray.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5e04d42df5e889d7a519950d"),
"ListOfNumbers" : [
10,
56,
78,
90,
32
]
}
{
"_id" : ObjectId("5e04d588f5e889d7a519950e"),
"ListOfNumbers" : [
56,
78,
91,
100
]
}3. $in 연산자로 배열 내 값 테스트하기
이제 ListOfNumbers 배열에 90이라는 값이 포함된 문서를 찾아보겠습니다.
> db.testInArray.find({ ListOfNumbers:{ "$in" : [90]} });쿼리 실행 결과, 배열에 90이 포함된 첫 번째 문서만 반환됩니다.
{ "_id" : ObjectId("5e04d42df5e889d7a519950d"), "ListOfNumbers" : [ 10, 56, 78, 90, 32 ] }마무리
$in 연산자는 단일 값뿐만 아니라 여러 값을 배열 형태로 함께 전달할 수 있어 매우 유용합니다. 예를 들어 { "$in": [90, 100] }처럼 작성하면 두 값 중 하나라도 배열에 포함된 모든 문서를 한 번의 쿼리로 조회할 수 있습니다. 배열 필드를 다루는 검색 로직을 구현할 때 $in 연산자를 적극 활용해 보시기 바랍니다.