Docs Menu

$ne

$ne

$ne는 지정된 필드의 값이 지정된 값과 같지 않은 문서를 선택합니다. 여기에는 지정된 필드가 포함되지 않은 문서도 포함됩니다.

다양한 BSON types 값을 비교하려면 지정된 BSON 비교순서를 참조하십시오.

다음 환경에서 호스팅되는 배포에 $ne 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 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 컬렉션에서 quantity20이 아닌 모든 문서를 선택합니다. 이 쿼리는 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" ] } } )

다음 전체 예시 두 개의 inventory 문서에 type 배열 추가하고 $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" ] } } )

출력에는 배열 [ "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 }
}
]

다음 쿼리 배열 의 요소를 반전시킵니다.

db.inventory.find( { type: { $ne: [ "fasteners", "hardware" ] } } )

bolts 문서 의 type 배열 [ "fasteners", "hardware" ]와 다른 [ "hardware", "fasteners" ]이므로 쿼리 nutswashers 문서 외에도 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 }
}
]