MongoDB에서 id(ObjectId)로 컬렉션 항목을 일치시키려면 $in 연산자를 사용하면 됩니다. 여러 개의 ObjectId 값을 배열로 전달하면 해당 id에 속한 문서들만 한 번에 조회할 수 있습니다.
1. 샘플 컬렉션 생성 및 문서 삽입
먼저 insertOne() 메서드를 사용해 데모용 컬렉션에 문서를 생성해 보겠습니다.
> db.demo528.insertOne({"Name":"Chris",Age:21});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8b00d2ef4dcbee04fbbbe0")
}
> db.demo528.insertOne({"Name":"Bob",Age:22});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8b00d9ef4dcbee04fbbbe1")
}
> db.demo528.insertOne({"Name":"David",Age:20});{
"acknowledged" : true,
"insertedId" : ObjectId("5e8b00e0ef4dcbee04fbbbe2")
}2. find() 메서드로 전체 문서 확인
find() 메서드를 사용하면 컬렉션의 모든 문서를 화면에 출력할 수 있습니다.
> db.demo528.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e8b00d2ef4dcbee04fbbbe0"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e8b00d9ef4dcbee04fbbbe1"), "Name" : "Bob", "Age" : 22 }
{ "_id" : ObjectId("5e8b00e0ef4dcbee04fbbbe2"), "Name" : "David", "Age" : 20 }3. $in 연산자로 특정 id 일치시키기
이제 $in 연산자를 사용해 원하는 ObjectId 목록에 해당하는 문서만 조회하는 쿼리를 살펴보겠습니다.
> db.demo528.find({
_id: {$in:[ObjectId("5e8b00d2ef4dcbee04fbbbe0"),ObjectId("5e8b00e0ef4dcbee04fbbbe2")]}
});실행 결과, 지정한 두 개의 ObjectId와 일치하는 문서만 반환되는 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5e8b00d2ef4dcbee04fbbbe0"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e8b00e0ef4dcbee04fbbbe2"), "Name" : "David", "Age" : 20 }정리
$in 연산자는 배열 안에 나열된 값 중 하나라도 일치하는 문서를 모두 반환합니다. 따라서 여러 개의 _id 값을 조건으로 조회할 때 개별적으로 find()를 반복 실행하는 것보다 훨씬 효율적이며, 실무에서도 대량의 ID 기반 조회 작업에 널리 활용됩니다.