문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

와일드카드 인덱스 제한

이 페이지의 내용

  • 호환되지 않는 인덱스 유형 또는 속성
  • 지원되지 않는 쿼리 및 애그리게이션 패턴
  • 샤딩

와일드카드 인덱스는 다음과 같은 인덱스 유형 또는 속성을 지원하지 않습니다.

참고

필드가 존재하지 않습니다 .

와일드카드 인덱스는 희박 하며 빈 필드를 인덱싱하지 않습니다. 따라서 와일드카드 인덱스는 필드가 존재하지 않는 문서에 대한 쿼리를 지원할 수 없습니다.

예를 들어, collection product_attributes에 와일드카드 인덱스가 있는 inventory 을 생각해 보겠습니다. 와일드카드 인덱스는 다음 쿼리를 지원할 수 없습니다.

db.inventory.find( {"product_attributes" : { $exists : false } } )
db.inventory.aggregate([
{ $match : { "product_attributes" : { $exists : false } } }
])
필드가 문서 또는 배열과 같음

와일드카드 인덱스는 문서/배열 자체가 아니라 문서 또는 배열의 내용 에 대한 항목을 생성합니다. 따라서 와일드카드 인덱스는 정확한 문서/배열 동등성 매치를 지원할 수 없습니다. 와일드카드 인덱스는 필드가 빈 문서 {} 와 같은 경우 쿼리를 지원할 수 있습니다 .

예를 들어, collection product_attributes에 와일드카드 인덱스가 있는 inventory 을 생각해 보겠습니다. 와일드카드 인덱스는 다음 쿼리를 지원할 수 없습니다.

db.inventory.find({ "product_attributes" : { "price" : 29.99 } } )
db.inventory.find({ "product_attributes.tags" : [ "waterproof", "fireproof" ] } )
db.inventory.aggregate([{
$match : { "product_attributes" : { "price" : 29.99 } }
}])
db.inventory.aggregate([{
$match : { "product_attributes.tags" : ["waterproof", "fireproof" ] } }
}])
필드가 문서 또는 배열과 같지 않음

와일드카드 인덱스는 문서/배열 자체가 아니라 문서 또는 배열의 내용 에 대한 항목을 생성합니다. 따라서 와일드카드 인덱스는 정확한 문서/배열 불일치 일치를 지원할 수 없습니다.

예를 들어, collection product_attributes에 와일드카드 인덱스가 있는 inventory 을 생각해 보겠습니다. 와일드카드 인덱스는 다음 쿼리를 지원할 수 없습니다.

db.inventory.find( { $ne : [ "product_attributes", { "price" : 29.99 } ] } )
db.inventory.find( { $ne : [ "product_attributes.tags", [ "waterproof", "fireproof" ] ] } )
db.inventory.aggregate([{
$match : { $ne : [ "product_attributes", { "price" : 29.99 } ] }
}])
db.inventory.aggregate([{
$match : { $ne : [ "product_attributes.tags", [ "waterproof", "fireproof" ] ] }
}])
배열 필드가 null과 같거나 같지 않음

지정된 필드가 collection 내 문서의 배열인 경우, 와일드카드 인덱스는 해당 필드가 null과 같거나 같지 않은 문서에 대한 쿼리를 지원할 수 없습니다.

예를 들어, product_attributes에 와일드카드 인덱스가 있는 collection inventory 을 생각해 보겠습니다. collection 내 문서에 product_attributes.tags 이(가) 배열된 경우 와일드카드 인덱스는 다음 queries를 지원할 수 없습니다.

db.inventory.find( { "product_attributes.tags": { $ne: null } } )
db.inventory.find( { "product_attributes.tags": null } )
db.inventory.aggregate([{
$match : { "product_attributes.tags": { $ne: null } }
}])
db.inventory.aggregate([{
$match : { "product_attributes.tags": null }
}])
필드가 null과 같음

와일드카드 인덱스는 필드가 null인 문서에 대한 쿼리를 지원할 수 없습니다. { $eq: null } 쿼리는 필드가 null이거나 누락된 모든 문서와 일치합니다. 와일드카드는 sparse 하며, 인덱싱된 필드가 누락된 문서를 인덱싱하지 않으므로 null에 대한 일치를 지원할 수 없습니다.

예를 들어 product_attributes 에 와일드카드 인덱스가 있는 collection inventory 을 생각해 보겠습니다. 와일드카드 인덱스는 다음 queries를 지원할 수 없습니다.

db.inventory.find( { "product_attributes.price": { $eq: null } } )
db.inventory.aggregate([{
$match : { "product_attributes.price": { $eq: null } }
}])

와일드카드 인덱스를 사용하여 collection을 샤딩할 수 없습니다. 샤딩하려는 필드에 와일드카드가 아닌 인덱스를 생성합니다. 샤드 키 선택에 대한 자세한 내용은 샤드 키를 참조하세요 .

← 와일드카드 인덱스