와일드카드 인덱스 제한
호환되지 않는 인덱스 유형 또는 속성
와일드카드 인덱스는 다음과 같은 인덱스 유형 또는 속성을 지원하지 않습니다.
참고
와일드카드 인덱스는 와일드카드 텍스트 인덱스 와 구별되며 호환되지 않습니다. 와일드카드 인덱스는 $text
연산자를 사용하는 쿼리를 지원할 수 없습니다.
지원되지 않는 쿼리 및 애그리게이션 패턴
- 필드가 존재하지 않습니다 .
와일드카드 인덱스는 희박 하며 빈 필드를 인덱싱하지 않습니다. 따라서 와일드카드 인덱스는 필드가 존재하지 않는 문서에 대한 쿼리를 지원할 수 없습니다.
예를 들어
product_attributes
에 와일드카드 인덱스가 있는 컬렉션inventory
을 생각해 보겠습니다. 와일드카드 인덱스는 다음 쿼리를 지원할 수 없습니다 .db.inventory.find( {"product_attributes" : { $exists : false } } ) db.inventory.aggregate([ { $match : { "product_attributes" : { $exists : false } } } ]) - 필드가 문서 또는 배열과 같음
와일드카드 인덱스는 문서/배열 자체가 아닌 문서 또는 배열의 내용 에 대한 항목을 생성합니다. 따라서 와일드카드 인덱스는 정확한 문서/배열 동등성 매치를 지원할 수 없습니다. 와일드카드 인덱스는 필드가 빈 문서
{}
와 같은 경우 쿼리를 지원할 수 있습니다 .예를 들어
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" ] } } }]) - 필드가 문서 또는 배열과 같지 않음
와일드카드 인덱스는 문서/배열 자체가 아닌 문서 또는 배열의 내용 에 대한 항목을 생성합니다. 따라서 와일드카드 인덱스는 정확한 문서/배열 불일치 일치를 지원할 수 없습니다.
예를 들어
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과 같거나 같지 않음
지정된 필드가 컬렉션 내 문서의 배열인 경우 와일드카드 인덱스는 해당 필드가 null과 같거나 같지 않은 문서에 대한 쿼리를 지원할 수 없습니다.
예를 들어
product_attributes
에 와일드카드 인덱스가 있는 컬렉션inventory
을 생각해 보겠습니다. 컬렉션의 문서에product_attributes.tags
가 배열인 경우 와일드카드 인덱스는 다음 쿼리를 지원할 수 없습니다 .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이거나 누락된 모든 문서와 일치합니다. 와일드카드는 희소 이며, 이는 인덱싱된 필드가 누락된 문서를 인덱싱하지 않으므로 null에 대한 일치를 지원할 수 없음을 의미합니다.예를 들어
product_attributes
에 와일드카드 인덱스가 있는 컬렉션inventory
을 생각해 보겠습니다. 와일드카드 인덱스는 다음 쿼리를 지원할 수 없습니다.db.inventory.find( { "product_attributes.price": { $eq: null } } ) db.inventory.aggregate([{ $match : { "product_attributes.price": { $eq: null } } }])
샤딩
와일드카드 인덱스를 사용하여 collection을 샤딩할 수 없습니다. 샤딩하려는 필드에 와일드카드가 아닌 인덱스를 생성합니다. 샤드 키 선택에 대한 자세한 내용은 샤드 키를 참조하세요 .