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

MongoDB에서 빈 데이터와 null 값 처리하기 – $ne 연산자 활용법

MongoDB에서는 데이터가 존재하지 않는 상황이 여러 가지 형태로 나타납니다. 필드 자체가 아예 없는 경우, 값이 null로 저장된 경우, 그리고 빈 문자열("")이 들어간 경우가 대표적입니다. 이처럼 선택적(optional)으로 입력되는 데이터를 효과적으로 처리하려면 $ne 연산자를 활용하면 됩니다.

테스트용 컬렉션 생성

먼저 세 가지 형태의 빈 데이터를 모두 포함하는 컬렉션을 만들어 보겠습니다. 아래 쿼리는 학생 이름은 있지만 국가 이름(StudentCountryName)이 각각 빈 문자열, null, 그리고 아예 없는 세 개의 문서를 삽입합니다.

> db.handlingAndEmptyDataDemo.insertOne({"StudentName":"John","StudentCountryName":""});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9cbd5ca629b87623db1b12")
}
> db.handlingAndEmptyDataDemo.insertOne({"StudentName":"John","StudentCountryName":null});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9cbd6ba629b87623db1b13")
}
> db.handlingAndEmptyDataDemo.insertOne({"StudentName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9cbd71a629b87623db1b14")
}

저장된 전체 문서 조회하기

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

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

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

{
   "_id" : ObjectId("5c9cbd5ca629b87623db1b12"),
   "StudentName" : "John",
   "StudentCountryName" : ""
}
{
   "_id" : ObjectId("5c9cbd6ba629b87623db1b13"),
   "StudentName" : "John",
   "StudentCountryName" : null
}
{ "_id" : ObjectId("5c9cbd71a629b87623db1b14"), "StudentName" : "John" }

$ne 연산자로 빈 데이터 제외하고 조회하기

이제 $ne 연산자를 사용하여 StudentCountryName 필드에 유효한 값이 들어있는 문서만 조회해 보겠습니다.

> db.handlingAndEmptyDataDemo.find({StudentCountryName: {$ne: null}});

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

{ "_id" : ObjectId("5c9cbd5ca629b87623db1b12"), "StudentName" : "John", "StudentCountryName" : "" }

결과를 살펴보면 흥미로운 점을 발견할 수 있습니다. StudentCountryName이 null이었던 문서와 해당 필드 자체가 존재하지 않았던 문서는 모두 결과에서 제외되고, 빈 문자열("")을 가진 문서만 반환되었습니다. 즉, MongoDB에서 {$ne: null} 조건은 null 값뿐만 아니라 필드가 아예 없는 문서까지 함께 걸러주기 때문에, 실제 값이 존재하는 문서만 정확히 추출하고 싶을 때 매우 유용합니다.