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

MongoDB에서 NumberInt()로 지정된 필드 값으로 특정 문서를 조회하는 쿼리 방법

MongoDB에서 NumberInt()는 값을 명시적으로 32비트 정수(int) 타입으로 저장할 때 사용하는 함수입니다. 일반적인 숫자 리터럴은 기본적으로 double 타입으로 저장되기 때문에, 정확한 데이터 타입 매칭이 필요한 경우 NumberInt()를 활용하면 됩니다.

이번 글에서는 NumberInt()로 저장된 필드 값을 조건으로 특정 문서를 조회하는 방법을 예제와 함께 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 NumberInt()를 사용해 문서를 포함하는 컬렉션을 생성합니다.

> db.demo357.insertOne(
...     {
...        "FirstName" : "Chris",
...        "Age" : 21,
...        "details" : {
...           "studentDetails" : {
...              "id" : NumberInt(101)
...           }
...        }
...     }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e568fa6f8647eb59e5620c9")
}
> db.demo357.insertOne(
...     {
...        "FirstName" : "David",
...        "Age" : 23,
...        "details" : {
...           "studentDetails" : {
...              "id" : NumberInt(110)
...           }
...        }
...     }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e568fbaf8647eb59e5620ca")
}

위 예제에서는 중첩된 구조인 details.studentDetails.id 필드에 각각 NumberInt(101)과 NumberInt(110) 값이 저장되었습니다.

2. find()로 전체 문서 확인하기

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

> db.demo357.find();

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

{ "_id" : ObjectId("5e568fa6f8647eb59e5620c9"), "FirstName" : "Chris", "Age" : 21, "details" : { "studentDetails" : { "id" : 101 } } }
{ "_id" : ObjectId("5e568fbaf8647eb59e5620ca"), "FirstName" : "David", "Age" : 23, "details" : { "studentDetails" : { "id" : 110 } } }

3. NumberInt() 값으로 특정 문서 조회하기

중첩된 필드에 점 표기법(dot notation)을 사용하고, 조회 조건 역시 동일하게 NumberInt()로 감싸주면 됩니다.

> db.demo357.find({"details.studentDetails.id": NumberInt(110)});

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

{ "_id" : ObjectId("5e568fbaf8647eb59e5620ca"), "FirstName" : "David", "Age" : 23, "details" : { "studentDetails" : { "id" : 110 } } }

핵심 정리

  • NumberInt()는 값을 32비트 정수 타입으로 명시적으로 저장합니다.
  • 중첩 필드를 조회할 때는 점 표기법(예: "details.studentDetails.id")을 사용합니다.
  • 저장 시 NumberInt()를 사용했다면, 조회 조건에서도 반드시 NumberInt()로 감싸야 정확히 매칭됩니다. 일반 숫자로 조회하면 타입이 달라 결과가 반환되지 않습니다.