MongoDB에서 쿼리를 실행할 때 NULL 또는 UNDEFINED 값이 저장된 문서를 결과에서 제외하고 싶다면 $ne(not equal) 연산자를 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 NULL과 UNDEFINED 값을 무시하는 방법을 단계별로 살펴보겠습니다.
1. 테스트용 컬렉션 생성 및 데이터 삽입
먼저 다양한 값(문자열, null, undefined)을 포함하는 컬렉션을 생성합니다.
> db.demo35.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e175e42cfb11e5c34d898d0")
}
> db.demo35.insertOne({"Name":null});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e175e46cfb11e5c34d898d1")
}
> db.demo35.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e175e4bcfb11e5c34d898d2")
}
> db.demo35.insertOne({"Name":undefined});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e175e54cfb11e5c34d898d3")
}2. 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo35.find();
위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{ "_id" : ObjectId("5e175e42cfb11e5c34d898d0"), "Name" : "Chris" }
{ "_id" : ObjectId("5e175e46cfb11e5c34d898d1"), "Name" : null }
{ "_id" : ObjectId("5e175e4bcfb11e5c34d898d2"), "Name" : "Bob" }
{ "_id" : ObjectId("5e175e54cfb11e5c34d898d3"), "Name" : undefined }현재 컬렉션에는 정상적인 문자열 값 외에도 null과 undefined가 함께 저장되어 있는 것을 확인할 수 있습니다.
3. $ne 연산자로 NULL 및 UNDEFINED 값 무시하기
이제 $ne 연산자를 사용하여 Name 필드의 값이 null이 아닌 문서만 조회해 보겠습니다.
> db.demo35.find({"Name": {$ne: null}});실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e175e42cfb11e5c34d898d0"), "Name" : "Chris" }
{ "_id" : ObjectId("5e175e4bcfb11e5c34d898d2"), "Name" : "Bob" }결과 분석
출력 결과를 보면 Name 필드가 null 또는 undefined인 문서는 모두 제외되고, 실제 유효한 값("Chris", "Bob")을 가진 문서만 반환된 것을 알 수 있습니다.
MongoDB에서 { "필드명": { $ne: null } } 조건은 해당 필드가 null이거나 undefined인 문서뿐만 아니라, 필드 자체가 존재하지 않는 문서까지 함께 제외합니다. 따라서 데이터 정합성이 중요한 조회 작업에서 유용하게 활용할 수 있습니다.