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

MongoDB에서 null 값 쿼리하는 방법 – $ne 연산자 활용 가이드

MongoDB에서 null 값을 다룰 때는 단순히 조건을 걸어 조회하는 것보다 $ne 연산자(not equal)를 활용하는 것이 효과적입니다. 이 글에서는 예제 컬렉션을 만들고, $ne 연산자를 사용해 특정 필드가 null이 아닌 문서만 조회하는 방법을 단계별로 살펴보겠습니다.

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

먼저 insertOne() 메서드를 사용해 컬렉션에 문서를 삽입합니다. 두 번째 문서의 StudentSubject 필드에는 의도적으로 null 값을 넣어 두 문서의 차이를 명확하게 했습니다.

> db.queryingNullDemo.insertOne(
...     {
...        "StudentName":"Larry",
...        "StudentDetails":
...        {
...           "StudentAge":21,
...           "StudentSubject":"MongoDB"
...        }
...     }
... );
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd00bec588d4a6447b2e05f")
}
> db.queryingNullDemo.insertOne(
...     {
...        "StudentName":"Sam",
...        "StudentDetails":
...        {
...           "StudentAge":23,
...           "StudentSubject":null
...        }
...     }
... );
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd00c00588d4a6447b2e060")
}

2. 저장된 전체 문서 확인

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

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

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

{
    "_id" : ObjectId("5cd00bec588d4a6447b2e05f"),
    "StudentName" : "Larry",
    "StudentDetails" : {
        "StudentAge" : 21,
        "StudentSubject" : "MongoDB"
        }
}
{
    "_id" : ObjectId("5cd00c00588d4a6447b2e060"),
    "StudentName" : "Sam",
    "StudentDetails" : {
        "StudentAge" : 23,
        "StudentSubject" : null
    }
}

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

$ne는 'not equal(같지 않음)'을 의미하는 비교 연산자입니다. 아래처럼 {$ne: null} 조건을 사용하면 해당 필드가 null이 아닌 문서만 조회할 수 있습니다.

> db.queryingNullDemo.find({'StudentDetails.StudentSubject': {$ne: null}});

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

{ "_id" : ObjectId("5cd00bec588d4a6447b2e05f"), 
"StudentName" : "Larry", 
"StudentDetails" : { "StudentAge" : 21, "StudentSubject" : "MongoDB" } }

결과를 보면 StudentSubject가 "MongoDB"인 Larry의 문서만 반환되고, 해당 필드가 null인 Sam의 문서는 제외된 것을 확인할 수 있습니다.

참고: 반대로 null 값만 조회하고 싶다면?

필드 값이 null인 문서를 찾으려면 {필드명: null} 조건을 사용하면 됩니다. 단, 이 방식은 필드 자체가 존재하지 않는 문서도 함께 매칭된다는 점에 유의해야 합니다. 실제 BSON 타입의 null만 정확히 조회하려면 {필드명: {$type: 10}} 조건을 사용하는 것이 좋습니다.