Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Restrições de índice curinga
Nesta página
Tipos ou propriedades de índice 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 query usando o operador $text
.
Padrões de query e agregação não suportados
- O campo não existe
Os índices curinga são escassos 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 query:db.inventory.find( {"product_attributes" : { $exists : false } } ) db.inventory.aggregate([ { $match : { "product_attributes" : { $exists : false } } } ]) - O campo é igual a um documento ou uma array
Os índices curinga geram entradas para o conteúdo de um documento ou array, e não para o documento/array em si. Os índices curinga, portanto, não podem suportar correspondências de igualdade de documento/array. Os índices curinga podem suportar consultas 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 query: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
Os índices curinga geram entradas para o conteúdo de um documento ou array, e não para o documento/array em si. Os índices curinga, portanto, 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 query: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 de array é 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 query de 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 query seproduct_attributes.tags
for uma array em qualquer documento da collection: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 suportam consultas de documentos em que 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 escassos, o que significa que não indexam os documentos onde o campo indexado está ausente e, portanto, não podem suportar uma correspondência em nulo.Por exemplo, considere uma collection
inventory
com um índice curinga emproduct_attributes
. O índice curinga não pode suportar as seguintes query: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.