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

MongoDB에서 조건과 일치하지 않는 레코드 조회하기 – $ne 연산자 활용법

MongoDB에서 조건과 일치하지 않는 레코드 찾기

MongoDB에서 특정 조건과 일치하지 않는 레코드를 조회하려면 $ne(not equal) 연산자를 사용하면 됩니다. 이 연산자는 지정한 값과 다른 문서만 필터링하여 반환해 주므로, 특정 값을 제외한 데이터를 추출할 때 매우 유용합니다.

실제 예제를 통해 살펴보겠습니다. 먼저 컬렉션을 생성하고 문서를 삽입합니다.

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

> db.demo148.insertOne({"Message":"Hello"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32fb37fdf09dd6d08539c0")
}
> db.demo148.insertOne({"Message":"Good"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32fb3efdf09dd6d08539c1")
}
> db.demo148.insertOne({"Message":"Bye"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32fb42fdf09dd6d08539c2")
}

위 코드에서는 demo148이라는 컬렉션에 "Hello", "Good", "Bye"라는 세 개의 메시지 문서를 각각 삽입했습니다.

2. 전체 문서 확인하기

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

> db.demo148.find();

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

{ "_id" : ObjectId("5e32fb37fdf09dd6d08539c0"), "Message" : "Hello" }
{ "_id" : ObjectId("5e32fb3efdf09dd6d08539c1"), "Message" : "Good" }
{ "_id" : ObjectId("5e32fb42fdf09dd6d08539c2"), "Message" : "Bye" }

3. $ne 연산자로 조건 불일치 레코드 조회하기

이제 $ne 연산자를 사용하여 "Message" 필드 값이 "Good"이 아닌 레코드만 조회해 보겠습니다.

> db.demo148.find({'Message' : {'$ne' : 'Good'}}).toArray(function(err, output)
... {
...    console.log(output);
... });

위 쿼리의 실행 결과는 다음과 같습니다.

[
   {
      "_id" : ObjectId("5e32fb37fdf09dd6d08539c0"),
      "Message" : "Hello"
   },
   {
      "_id" : ObjectId("5e32fb42fdf09dd6d08539c2"),
      "Message" : "Bye"
   }
]

결과 분석

출력 결과를 보면 "Good"이라는 값을 가진 문서는 제외되고, "Hello"와 "Bye" 두 개의 문서만 반환된 것을 확인할 수 있습니다. 이처럼 $ne 연산자는 쿼리 조건에서 특정 값을 배제하고 싶을 때 간단하게 사용할 수 있습니다.

참고로 $ne 연산자는 숫자, 문자열뿐 아니라 배열이나 날짜 등 다양한 데이터 타입에도 적용할 수 있으며, 인덱스가 설정되어 있지 않은 경우 전체 컬렉션을 스캔할 수 있으므로 대용량 데이터에서는 성능에 유의하는 것이 좋습니다.