$ne
정의
$ne
$ne
이는 지정된 필드의 값이 지정된 값과 다른 문서를 선택할 때도 마찬가지입니다. 여기에는 지정된 필드가 포함되지 않은 문서도 포함됩니다.다양한 BSON 값을 비교하려면 지정된 BSON 비교 순서를 참조하세요.
호환성
다음 환경에서 호스팅되는 배포에 $ne
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$ne
연산자의 형식은 다음과 같습니다.
{ field: { $ne: value } }
참고
$ne
연산자의 값이 null인 경우 자세한 내용은 비동등 필터 를 참조하세요.
예시
다음 예시에서는 inventory
컬렉션을 사용합니다. 컬렉션을 생성하려면 mongosh
에서 다음의 insertMany()
명령을 실행합니다.
db.inventory.insertMany( [ { "item": "nuts", "quantity": 30, "carrier": { "name": "Shipit", "fee": 3 } }, { "item": "bolts", "quantity": 50, "carrier": { "name": "Shipit", "fee": 4 } }, { "item": "washers", "quantity": 10, "carrier": { "name": "Shipit", "fee": 1 } } ] )
동일하지 않은 문서 필드 일치시키기
inventory
컬렉션에서 quantity
가 20
이 아닌 모든 문서를 선택합니다. 이 쿼리는 quantity
필드가 없는 문서도 다음과 같이 선택합니다.
db.inventory.find( { quantity: { $ne: 20 } } )
{ _id: ObjectId("61ba667dfe687fce2f042420"), item: 'nuts', quantity: 30, carrier: { name: 'Shipit', fee: 3 } }, { _id: ObjectId("61ba667dfe687fce2f042421"), item: 'bolts', quantity: 50, carrier: { name: 'Shipit', fee: 4 } }, { _id: ObjectId("61ba667dfe687fce2f042422"), item: 'washers', quantity: 10, carrier: { name: 'Shipit', fee: 1 } }
이 쿼리와 동일한 SQL:
SELECT * FROM INVENTORY WHERE QUANTITIY != 20
동일하지 않은 내장된 문서 필드 기반 업데이트
다음 예제에서는 내장된 문서의 필드에 대한 $ne
비교를 기반으로 price
필드를 설정합니다. updateMany()
연산은 fee
라는 하위 필드가 있는 내장된 문서인 carrier
를 검색합니다. $set
를 사용하여 fee
의 값이 1
과 같지 않거나 fee
하위 필드가 존재하지 않는 각 문서에서 price
필드를 9.99
로 다음과 같이 업데이트합니다.
db.inventory.updateMany( { "carrier.fee" : { $ne: 1 } }, { $set: { "price": 9.99 } } )
{ _id: ObjectId("61ba66e2fe687fce2f042423"), item: 'nuts', quantity: 30, carrier: { name: 'Shipit', fee: 3 }, price: 9.99 }, { _id: ObjectId("61ba66e2fe687fce2f042424"), item: 'bolts', quantity: 50, carrier: { name: 'Shipit', fee: 4 }, price: 9.99 }, { _id: ObjectId("61ba66e2fe687fce2f042425"), item: 'washers', quantity: 10, carrier: { name: 'Shipit', fee: 1 } }
이 쿼리와 동일한 SQL:
UPDATE INVENTORY SET PRICE = '9.99' WHERE carrierfee != 1
부등식 연산자 $ne
는 인덱스의 상당 부분과 일치하는 경우가 많으므로 선별성이 그다지 높지 않습니다. 따라서 대부분의 경우 인덱스가 있는 $ne
쿼리는 컬렉션의 모든 문서를 스캔해야 하는 $ne
쿼리보다 성능이 떨어질 수 있습니다. 쿼리 선택성을 참조하세요.