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

MongoDB에서 필드에 null 값이 포함되어 있는지 확인하는 방법 ($type 연산자)

MongoDB에서 특정 필드에 null 값이 포함되어 있는지 확인하려면 $type 연산자를 사용하면 됩니다. BSON 타입 중 null은 번호 10에 해당하므로, { $type: 10 } 조건을 사용하면 해당 필드의 값이 null로 저장된 문서만 정확하게 조회할 수 있습니다.

1. 테스트용 컬렉션 생성 및 데이터 삽입

먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입합니다. 이때 의도적으로 한 문서의 필드에 null을 넣어 두겠습니다.

> db.nullDemo.insertOne({"FirstName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc68a1eac184d684e3fa270")
}
> db.nullDemo.insertOne({"FirstName":null});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc68a25ac184d684e3fa271")
}
> db.nullDemo.insertOne({"FirstName":"Robert"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc68a2cac184d684e3fa272")
}

2. 전체 문서 조회하기

find() 메서드를 사용해 컬렉션의 모든 문서를 확인합니다.

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

실행 결과는 다음과 같습니다. 두 번째 문서의 FirstName 필드가 null로 저장되어 있는 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5cc68a1eac184d684e3fa270"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5cc68a25ac184d684e3fa271"), "FirstName" : null }
{ "_id" : ObjectId("5cc68a2cac184d684e3fa272"), "FirstName" : "Robert" }

3. $type 연산자로 null 값 확인하기

다음 쿼리는 FirstName 필드의 값이 null인 문서만 조회합니다.

> db.nullDemo.find( { FirstName: { $type: 10 } } );

실행 결과, null이 포함된 문서 하나만 반환됩니다.

{ "_id" : ObjectId("5cc68a25ac184d684e3fa271"), "FirstName" : null }

추가 팁: 더 읽기 쉬운 표현과 주의 사항

MongoDB 3.2부터는 숫자 대신 문자열 별칭을 사용할 수 있어 쿼리의 가독성이 크게 향상됩니다. 아래와 같이 작성해도 동일한 결과를 얻을 수 있습니다.

> db.nullDemo.find( { FirstName: { $type: "null" } } );

또한 { FirstName: null }처럼 null과 직접 비교하는 방법도 있지만, 이 경우에는 값이 null인 문서뿐 아니라 FirstName 필드 자체가 존재하지 않는 문서까지 함께 조회된다는 점에 주의해야 합니다. 따라서 명시적으로 null이 저장된 문서만 정확히 찾으려면 $type: 10 또는 $type: "null"을 사용하는 것이 가장 안전합니다.