정의
$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 쿼리 보다 성능이 좋지 않을 수 있습니다. 선택적 쿼리 만들기도 참조하세요.
배열
배열을 비교할 때, $ne 는 문서 배열이 $ne에 지정된 배열과 다를 경우 문서를 일치시킵니다. 구체적으로, $ne 는 배열이 다음 조건을 만족하는 모든 문서와 일치합니다.
다른 요소 값 또는 문자열을 가집니다.
요소가 다른 순서로 배치되어 있습니다.
요소의 수가 다른 경우
문서에서 누락되었습니다
예시 들어, 다음 쿼리 type 배열 [ "hardware", "fasteners" ]와 다른 inventory 문서를 반환합니다.
db.inventory.find( { type: { $ne: [ "hardware", "fasteners" ] } } )
다음은 type 배열을 두 개의 inventory 문서에 추가하고 $ne 쿼리를 실행하는 전체 예시입니다.
// Update the nuts document to include a type array db.inventory.updateOne( { item: "nuts" }, { $set: { type: [ "hardware" ] } } ) // Update the bolts document to include a type array db.inventory.updateOne( { item: "bolts" }, { $set: { type: [ "hardware", "fasteners" ] } } ) // Find documents where the type array differs from [ "hardware", "fasteners" ] db.inventory.find( { type: { $ne: [ "hardware", "fasteners" ] } } )
nuts 문서를 출력하는 이유는 배열이 [
"hardware", "fasteners" ]과 다르기 때문이며, washers 문서를 출력하는 이유는 type 배열이 없기 때문입니다:
[ { _id: ObjectId('679d26907c5a58595234305c'), item: 'nuts', quantity: 30, carrier: { name: 'Shipit', fee: 3 }, type: [ 'hardware' ] }, { _id: ObjectId('679d26907c5a58595234305e'), item: 'washers', quantity: 10, carrier: { name: 'Shipit', fee: 1 } } ]
다음 쿼리는 배열의 요소를 역순으로 변환합니다.
db.inventory.find( { type: { $ne: [ "fasteners", "hardware" ] } } )
bolts 문서의 type 배열이 [ "hardware",
"fasteners" ]이기 때문에 [ "fasteners", "hardware" ]와 달라서 쿼리는 nuts 및 washers 문서 외에 bolts 문서를 반환합니다:
[ { _id: ObjectId('679d26907c5a58595234305c'), item: 'nuts', quantity: 30, carrier: { name: 'Shipit', fee: 3 }, type: [ 'hardware' ] }, { _id: ObjectId('679d26907c5a58595234305d'), item: 'bolts', quantity: 50, carrier: { name: 'Shipit', fee: 4 }, type: [ 'hardware', 'fasteners' ] }, { _id: ObjectId('679d26907c5a58595234305e'), item: 'washers', quantity: 10, carrier: { name: 'Shipit', fee: 1 } } ]
$ne 지정된 값이 배열에 포함되지 않은 문서 및 배열이 없는 문서와 일치시킵니다. 예시:
db.inventory.find( { type: { $ne: "fasteners" } } )
배열 [ "hardware"
] 이 "fasteners"와 다르기 때문에 쿼리는 nuts 문서를 반환합니다. 또한, 쿼리는 type 배열이 없기 때문에 washers 문서를 반환합니다. 쿼리 결과:
[ { _id: ObjectId('679d26907c5a58595234305c'), item: 'nuts', quantity: 30, carrier: { name: 'Shipit', fee: 3 }, type: [ 'hardware' ] }, { _id: ObjectId('679d26907c5a58595234305e'), item: 'washers', quantity: 10, carrier: { name: 'Shipit', fee: 1 } } ]