Restrições de índice curinga
Nesta página
Tipos de índice ou propriedades incompatíveis
Os índices curinga não suportam os seguintes tipos de índice ou propriedades:
Observação
Os índices Curinga são distintos e incompatíveis com os Índices de Texto Curinga. Os índices curinga não suportam consultas usando o operador $text
.
Padrões de query e agregação não suportados
- O campo não existe
Os índices curinga são esparsos e não indexam campos vazios. Os índices curinga, portanto, não podem suportar a consulta de documentos onde um campo não existe.
Por exemplo, considere uma collection
inventory
com um índice curinga emproduct_attributes
. O índice curinga não pode suportar as seguintes queries:db.inventory.find( {"product_attributes" : { $exists : false } } ) db.inventory.aggregate([ { $match : { "product_attributes" : { $exists : false } } } ]) - O campo é igual a um documento ou uma array
Índices curinga geram entradas para o conteúdo de um documento ou array, e não para o documento/array em si. Portanto, os índices curinga não podem suportar correspondências exatas de igualdade de documento/matriz. Os índices curinga podem suportar query onde o campo é igual a um documento vazio
{}
.Por exemplo, considere uma collection
inventory
com um índice curinga emproduct_attributes
. O índice curinga não pode suportar as seguintes queries: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" ] } } }]) - O campo não é igual a um documento ou array
Índices curinga geram entradas para o conteúdo de um documento ou array, e não para o documento/array em si. Portanto, os índices curinga não podem suportar correspondências exatas de desigualdade de documento/array.
Por exemplo, considere uma collection
inventory
com um índice curinga emproduct_attributes
. O índice curinga não pode suportar as seguintes queries: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" ] ] } }]) - O campo da matriz é igual ou não igual a nulo
Se um determinado campo for uma array em qualquer documento da collection, os índices curinga não poderão suportar queries para documentos em que esse campo seja igual ou não igual a nulo.
Por exemplo, considere uma collection
inventory
com um índice curinga emproduct_attributes
. O índice curinga não pode suportar as seguintes queries seproduct_attributes.tags
for uma array em qualquer documento da coleção: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 } }]) - O campo é igual a nulo
Os índices curinga não podem suportar queries para documentos onde um campo é igual a nulo. A query
{ $eq: null }
corresponde a todos os documentos onde o campo é nulo ou está ausente. Os curingas são esparsos, o que significa que eles não indexam os documentos onde o campo indexado está ausente e, portanto, não podem suportar uma correspondência nulo.Por exemplo, considere uma collection
inventory
com um índice curinga emproduct_attributes
. O índice curinga não pode suportar as seguintes queries:db.inventory.find( { "product_attributes.price": { $eq: null } } ) db.inventory.aggregate([{ $match : { "product_attributes.price": { $eq: null } } }])
Fragmentação
Você não pode fragmentar uma collection usando um índice curinga. Crie um índice não curinga no campo ou campos que você deseja fragmentar. Para obter mais informações sobre a seleção de chaves de shard, consulte Chaves de Shard.