MongoDB에서 여러 개의 문서를 동시에 검색하려면 $in 연산자를 사용하면 됩니다. $in은 지정한 배열 안의 값과 일치하는 모든 문서를 반환하는 연산자로, 특정 조건에 해당하는 다수의 문서를 효율적으로 조회할 때 매우 유용합니다.
이번 글에서는 예제 컬렉션을 만들고, $in 연산자를 활용해 여러 문서를 검색하는 과정을 단계별로 살펴보겠습니다.
1. 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용해 demo161이라는 컬렉션에 문서들을 생성합니다.
> db.demo161.insertOne({"ClientId":101,"ClientName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577cafdf09dd6d0853a09")
}
> db.demo161.insertOne({"ClientId":102,"ClientName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577d0fdf09dd6d0853a0a")
}
> db.demo161.insertOne({"ClientId":103,"ClientName":"David","ClientAge":35});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577dffdf09dd6d0853a0b")
}
> db.demo161.insertOne({"ClientId":104,"ClientName":"Carol","ClientAge":31});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3577eefdf09dd6d0853a0c")
}2. find() 메서드로 전체 문서 확인하기
컬렉션에 저장된 모든 문서를 확인하려면 find() 메서드를 사용합니다.
> db.demo161.find();
위 쿼리를 실행하면 다음과 같이 4개의 문서가 출력됩니다.
{ "_id" : ObjectId("5e3577cafdf09dd6d0853a09"), "ClientId" : 101, "ClientName" : "Chris" }
{ "_id" : ObjectId("5e3577d0fdf09dd6d0853a0a"), "ClientId" : 102, "ClientName" : "David" }
{ "_id" : ObjectId("5e3577dffdf09dd6d0853a0b"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3577eefdf09dd6d0853a0c"), "ClientId" : 104, "ClientName" : "Carol", "ClientAge" : 31 }3. $in 연산자로 여러 문서 검색하기
이제 핵심인 $in 연산자를 사용해 ClientId가 101, 103, 104인 문서만 조회해 보겠습니다. $in 뒤에 원하는 값들을 배열 형태로 나열하면 됩니다.
> db.demo161.find({ClientId:{$in:[101,103,104]}});실행 결과는 다음과 같습니다. ClientId가 102인 문서는 제외되고, 지정한 값에 해당하는 3개의 문서만 반환된 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5e3577cafdf09dd6d0853a09"), "ClientId" : 101, "ClientName" : "Chris" }
{ "_id" : ObjectId("5e3577dffdf09dd6d0853a0b"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3577eefdf09dd6d0853a0c"), "ClientId" : 104, "ClientName" : "Carol", "ClientAge" : 31 }정리
MongoDB에서 여러 문서를 검색할 때는 $in 연산자가 가장 간단하고 직관적인 방법입니다. 배열 안에 일치시키고 싶은 값을 나열하기만 하면 되므로, OR 조건을 여러 번 작성하는 것보다 코드가 훨씬 깔끔해집니다. 또한 $in은 인덱스를 활용할 수 있어 대량의 데이터를 조회할 때도 좋은 성능을 기대할 수 있습니다.