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

MongoDB에서 id로 컬렉션 항목 일치시키는 방법 ($in 연산자 활용)

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 기반 조회 작업에 널리 활용됩니다.