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

MongoDB에서 $in 연산자로 특정 여러 문서 한 번에 조회하기

MongoDB에서 조건에 맞는 여러 문서를 한 번에 가져오려면 $in 연산자를 사용하면 됩니다. $in은 지정한 배열 안의 값과 일치하는 필드를 가진 문서만 골라 조회해 주는 연산자로, 특정 ID나 이름 목록에 해당하는 데이터를 추출할 때 매우 유용합니다. SQL의 WHERE id IN (1, 3) 구문과 같은 역할을 한다고 이해하면 쉽습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 예제로 사용할 컬렉션을 만들고 insertOne() 메서드로 문서를 차례대로 삽입해 보겠습니다.

> db.demo593.insertOne({id:1,"Name":"Chris"});
{
   "acknowledged" : true, "insertedId" : ObjectId("5e93177dfd2d90c177b5bcd9")
}
> db.demo593.insertOne({id:2,"Name":"John"});
{
   "acknowledged" : true, "insertedId" : ObjectId("5e931785fd2d90c177b5bcda")
}
> db.demo593.insertOne({id:3,"Name":"Bob"});
{
   "acknowledged" : true, "insertedId" : ObjectId("5e93178cfd2d90c177b5bcdb")
}
> db.demo593.insertOne({id:4,"Name":"Sam"});
{
   "acknowledged" : true, "insertedId" : ObjectId("5e931792fd2d90c177b5bcdc")
}

2. 전체 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo593.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e93177dfd2d90c177b5bcd9"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e931785fd2d90c177b5bcda"), "id" : 2, "Name" : "John" }
{ "_id" : ObjectId("5e93178cfd2d90c177b5bcdb"), "id" : 3, "Name" : "Bob" }
{ "_id" : ObjectId("5e931792fd2d90c177b5bcdc"), "id" : 4, "Name" : "Sam" }

3. $in으로 특정 문서만 조회하기

이제 id가 1 또는 3인 문서만 골라서 가져와 보겠습니다. 조회 조건 객체 안에 { $in: [1, 3] } 형태로 배열을 전달하면 됩니다.

> db.demo593.find({id:{$in:[1,3]}});

실행 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e93177dfd2d90c177b5bcd9"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e93178cfd2d90c177b5bcdb"), "id" : 3, "Name" : "Bob" }

정리

실행 결과를 보면 id가 1(Chris)과 3(Bob)인 두 개의 문서만 반환된 것을 확인할 수 있습니다. 이처럼 $in 연산자는 배열로 전달한 값 중 하나라도 일치하는 문서를 모두 조회해 줍니다. 문자열 필드에도 동일하게 적용할 수 있으며, 예를 들어 { Name: { $in: ["Chris", "Bob"] } }처럼 작성하면 이름 기준으로도 여러 문서를 한 번에 가져올 수 있습니다. 대량의 데이터에서 특정 항목들만 효율적으로 추출해야 할 때 $in은 가장 기본적이면서도 강력한 도구입니다.