Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Restrições de índice curinga

Nesta página

  • Tipos ou propriedades de índice 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:

Observação

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

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.

← Índices curinga