Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Restrições de índice curinga

Nesta página

  • Tipos de índice ou propriedades incompatíveis
  • Padrões de query e agregação não suportados
  • Fragmentação

Os índices curinga não suportam os seguintes tipos de índice ou propriedades:

  • composto

  • TTL

  • Text

  • 2d (Geoespacial)

  • 2dsphere (Geoespacial)

  • Hash

  • Unique

Observação

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 em product_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 em product_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 em product_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 em product_attributes. O índice curinga não pode suportar as seguintes queries se product_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 em product_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 } }
}])

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.

Voltar

Curinga