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

MongoDB에서 $in 연산자로 여러 필드 정확히 일치하는 문서 조회하기

개요

여러 문서 필드에서 값이 정확히 일치하는 데이터를 조회하려면 MongoDB의 $in 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 컬렉션 생성부터 조건에 맞는 문서 조회까지 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성하기

먼저 insertOne() 메서드를 사용해 컬렉션을 만들고 문서를 삽입합니다.

> db.demo422.insertOne({"Name":"Chris","Marks":34});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e73a4059822da45b30346e1")
}
> db.demo422.insertOne({"Name":"Chris","Marks":56});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e73a40a9822da45b30346e2")
}
> db.demo422.insertOne({"Name":"David","Marks":78});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e73a4149822da45b30346e3")
}
> db.demo422.insertOne({"Name":"Sam","Marks":45});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e73a41e9822da45b30346e4")
}
> db.demo422.insertOne({"Name":"David","Marks":89});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e73a4239822da45b30346e5")
}

2. 전체 문서 확인하기

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

> db.demo422.find();

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

{ "_id" : ObjectId("5e73a4059822da45b30346e1"), "Name" : "Chris", "Marks" : 34 }
{ "_id" : ObjectId("5e73a40a9822da45b30346e2"), "Name" : "Chris", "Marks" : 56 }
{ "_id" : ObjectId("5e73a4149822da45b30346e3"), "Name" : "David", "Marks" : 78 }
{ "_id" : ObjectId("5e73a41e9822da45b30346e4"), "Name" : "Sam", "Marks" : 45 }
{ "_id" : ObjectId("5e73a4239822da45b30346e5"), "Name" : "David", "Marks" : 89 }

3. $in과 $and로 정확히 일치하는 문서 조회하기

이제 여러 필드에서 값이 정확히 일치하는 레코드를 가져오는 쿼리를 살펴보겠습니다. $and 연산자 안에서 각 필드에 $in을 적용하면, 이름(Name)과 점수(Marks) 두 조건을 모두 만족하는 문서만 조회할 수 있습니다.

> db.demo422.find({'$and': [{'Name': {'$in': ['Chris', 'David']}, 'Marks': {'$in': [34,89]}}]});

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

{ "_id" : ObjectId("5e73a4059822da45b30346e1"), "Name" : "Chris", "Marks" : 34 }
{ "_id" : ObjectId("5e73a4239822da45b30346e5"), "Name" : "David", "Marks" : 89 }

결과 분석

출력 결과를 보면 'Chris'이면서 점수가 34점인 문서와 'David'이면서 점수가 89점인 문서만 반환된 것을 확인할 수 있습니다. 반면 'Chris'이지만 점수가 56점인 문서나 'David'이지만 점수가 78점인 문서는 조건에 맞지 않아 제외되었습니다.

이처럼 $and$in을 함께 사용하면 여러 필드에 대한 정확한 일치 조건을 손쉽게 처리할 수 있어, 복잡한 조건의 데이터 조회 작업에 매우 유용합니다.