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

MongoDB에서 값이 배열에 포함되어 있는지 확인하는 쿼리 방법

MongoDB $in 연산자로 배열 내 특정 값 확인하기

MongoDB에서 특정 값이 배열 필드에 포함되어 있는지 확인하려면 $in 연산자를 사용하면 됩니다. 이 연산자는 지정한 값 중 하나라도 배열 안에 존재하는 문서를 손쉽게 조회할 수 있게 해줍니다.

1. 샘플 컬렉션 생성

먼저 테스트에 사용할 문서들이 담긴 컬렉션을 생성해 보겠습니다.

> db.testInArray.insertOne({"ListOfNumbers":[10,56,78,90,32]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e04d42df5e889d7a519950d")
}
> db.testInArray.insertOne({"ListOfNumbers":[56,78,91,100]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e04d588f5e889d7a519950e")
}

숫자 배열을 가진 두 개의 문서가 성공적으로 삽입되었습니다.

2. 전체 문서 조회하기

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

> db.testInArray.find().pretty();

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

{
   "_id" : ObjectId("5e04d42df5e889d7a519950d"),
   "ListOfNumbers" : [
      10,
      56,
      78,
      90,
      32
   ]
}
{
   "_id" : ObjectId("5e04d588f5e889d7a519950e"),
   "ListOfNumbers" : [
      56,
      78,
      91,
      100
   ]
}

3. $in 연산자로 배열 내 값 테스트하기

이제 ListOfNumbers 배열에 90이라는 값이 포함된 문서를 찾아보겠습니다.

> db.testInArray.find({ ListOfNumbers:{ "$in" : [90]} });

쿼리 실행 결과, 배열에 90이 포함된 첫 번째 문서만 반환됩니다.

{ "_id" : ObjectId("5e04d42df5e889d7a519950d"), "ListOfNumbers" : [ 10, 56, 78, 90, 32 ] }

마무리

$in 연산자는 단일 값뿐만 아니라 여러 값을 배열 형태로 함께 전달할 수 있어 매우 유용합니다. 예를 들어 { "$in": [90, 100] }처럼 작성하면 두 값 중 하나라도 배열에 포함된 모든 문서를 한 번의 쿼리로 조회할 수 있습니다. 배열 필드를 다루는 검색 로직을 구현할 때 $in 연산자를 적극 활용해 보시기 바랍니다.