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

MongoDB에서 null이 아닌 값 확인하는 방법 – $ne 연산자 활용하기

MongoDB에서 null이 아닌 값 확인하는 방법

MongoDB에서 특정 필드가 null이 아닌 문서만 조회하고 싶다면 $ne(not equal) 연산자를 사용하면 됩니다. 이 글에서는 예제 컬렉션을 직접 만들어보고, $ne : null 조건을 적용해 null이 아닌 문서만 필터링하는 과정을 단계별로 살펴보겠습니다.

1. 예제 컬렉션 생성 및 문서 삽입

먼저 demo764라는 이름의 컬렉션을 생성하고 세 개의 문서를 삽입합니다. 두 번째 문서에는 LoginPassword 값이 명시적으로 null로 저장되어 있다는 점에 주목하세요.

> db.demo764.insertOne({"LoginUserName":"Chris","LoginPassword":"Chris_12"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb04ee55637cd592b2a4afc")
}
> db.demo764.insertOne({"LoginUserName":"Chris","LoginPassword":null});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb04eee5637cd592b2a4afd")
}
> db.demo764.insertOne({"LoginUserName":"Chris","LoginPassword":""});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb04ef35637cd592b2a4afe")
}

2. find() 메서드로 전체 문서 조회하기

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

> db.demo764.find();

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

{ "_id" : ObjectId("5eb04ee55637cd592b2a4afc"), "LoginUserName" : "Chris", "LoginPassword" : "Chris_12" }
{ "_id" : ObjectId("5eb04eee5637cd592b2a4afd"), "LoginUserName" : "Chris", "LoginPassword" : null }
{ "_id" : ObjectId("5eb04ef35637cd592b2a4afe"), "LoginUserName" : "Chris", "LoginPassword" : "" }

3. $ne 연산자로 null이 아닌 문서 조회하기

다음은 LoginPassword 필드가 null이 아닌 문서만 조회하는 쿼리입니다.

> db.demo764.find({"LoginUserName":"Chris","LoginPassword" : { '$ne': null } });

실행 결과를 확인해 보면, LoginPasswordnull인 두 번째 문서는 제외되고 나머지 두 개의 문서만 반환됩니다.

{ "_id" : ObjectId("5eb04ee55637cd592b2a4afc"), "LoginUserName" : "Chris", "LoginPassword" : "Chris_12" }
{ "_id" : ObjectId("5eb04ef35637cd592b2a4afe"), "LoginUserName" : "Chris", "LoginPassword" : "" }

정리 및 추가 팁

MongoDB에서 null 체크는 { 필드명: { $ne: null } } 형태로 간단하게 처리할 수 있습니다. 다만 주의할 점은 이 조건이 빈 문자열("")도 유효한 값으로 간주하여 함께 반환한다는 것입니다. 위 예제에서도 빈 문자열을 가진 세 번째 문서가 결과에 포함된 것을 확인할 수 있습니다.

만약 빈 문자열까지 함께 제외하고 싶다면 다음과 같이 $nin 연산자를 활용하거나, $exists$ne를 조합해 사용할 수 있습니다.

> db.demo764.find({"LoginPassword" : { "$nin": [null, ""] } });

또한 MongoDB에서는 해당 필드 자체가 존재하지 않는 문서도 $ne: null 조건에 포함되므로, 필드 존재 여부까지 엄격하게 검사해야 하는 경우 $exists: true 조건을 함께 추가하는 것이 좋습니다.