만약 MongoDB에서 특정 컬럼이 있거나 없는 경우의 쿼리문을 작성하고자 합니다. 어떻게 하면 컬럼의 존재 여부를 적용하여 찾을 수 있을까요? 아래에서 알아봅니다.




# MongoDB에 없거나 있는 컬럼으로 쿼리문 작성

쿼리문에 find()를 사용하여 일치하는 데이터를 가져오려고 합니다. 이때 name이라는 필드가 있는 경우의 데이터만 필요할 수 있겠죠. 아니면 반대로 name 이름의 컬럼이 없는 데이터만 가져와 name의 값을 추가할 필요도 있을 것입니다. 이때 사용 가능한 방법이 바로 $exists입니다.

$exists // <boolean> 컬럼의 여부
 
바로 간단한 예제를 만들어 보겠습니다.


!MongoDB 컬럼이 없는 경우의 데이터 불러오기
아래는 쿼리문을 사용하여 만약 name 이름의 컬럼이 없는 경우만 해당하는 값을 가져오려고 합니다.
{ $exists: false }

이제 이 문법을 find()에 추가하여 아래처럼 사용합니다.
db.collection.find('name': { $exists: false })

위 쿼리의 결과는 해당 컬럼 name이 없는 값들을 가져오게 됩니다. 컬럼이 없는 경우 값을 추가하기 위해 위와 같은 쿼리문을 작성할 수 있겠죠


!MongoDB 컬럼이 있는 경우의 데이터 불러오기
그렇다면 반대로 값이 있는 경우의 데이터만 가져오려면 어떻게 할까요? 간단하게 $exist: true로 바꾸어주면 됩니다.
{ $exists: true }

이제 아래와 같이 작성할 수 있겠죠.
db.collection.find('name': { $exists: true })

이제 값이 있는 컬럼, 필드만 조회가 가능합니다.


! 언제 필요한가?
만약 특정 컬럼이 반드시 필요한 경우 없는 컬럼만 찾아 값을 추가하기 위한 목적으로도 필요할 수 있습니다.