Menu Docs
Página inicial do Docs
/ /

Criar um Índice Curinga em Todos os Campos

Você pode criar um índice curinga que ofereça suporte a query em todos os campo de documento possíveis. Os índices curinga suportam query em nomes de campo arbitrários ou desconhecidos.

Para criar um índice curinga em todos os campos (excluindo _id), utilize o especificador curinga ($**) como a chave de índice:

db.<collection>.createIndex( { "$**": <sortOrder> } )

Utilize índices curinga somente quando os campos que você deseja indexar forem desconhecidos ou possam mudar. Os índices curinga não funcionam tão bem quanto os índices direcionados em campos específicos. Se sua collection contiver nomes de campo arbitrários que impeçam índices direcionados, considere remodelar seu esquema para ter nomes de campo consistentes. Para saber mais sobre índices direcionados, consulte Crie índices para dar suporte às suas queries.

Crie uma coleção artwork que contenha os seguintes documentos:

db.artwork.insertMany( [
{
"name": "The Scream",
"artist": "Edvard Munch",
"style": "modern",
"themes": [ "humanity", "horror" ]
},
{
"name": "Acrobats",
"artist": {
"name": "Raoul Dufy",
"nationality": "French",
"yearBorn": 1877
},
"originalTitle": "Les acrobates",
"dimensions": [ 65, 49 ]
},
{
"name": "The Thinker",
"type": "sculpture",
"materials": [ "bronze" ],
"year": 1904
}
] )

Cada documento contém detalhes sobre a arte. Os nomes dos campos variam entre documentos, dependendo das informações disponíveis sobre a peça.

A seguinte operação cria um índice curinga em todos os campos do documento na collection artwork (excluindo _id):

db.artwork.createIndex( { "$**" : 1 } )

Esse índice oferece suporte a query de campo único em qualquer campo da collection. Se um documento contiver um documento incorporado ou array, o índice curinga atravessará o documento ou array e armazenará o valor de todos os campo no documento ou array.

Por exemplo, o índice suporta a seguinte query:

  • Query:

    db.artwork.find( { "style": "modern" } )

    Saída:

    [
    {
    _id: ObjectId("6352c401b1fac2ee2e957f09"),
    name: 'The Scream',
    artist: 'Edvard Munch',
    style: 'modern',
    themes: [ 'humanity', 'horror' ]
    }
    ]
  • Query:

    db.artwork.find( { "artist.nationality": "French" } )

    Saída:

    [
    {
    _id: ObjectId("6352c525b1fac2ee2e957f0d"),
    name: 'Acrobats',
    artist: { name: 'Raoul Dufy', nationality: 'French', yearBorn: 1877 },
    originalTitle: 'Les acrobates',
    dimensions: [ 65, 49 ]
    }
    ]
  • Query:

    db.artwork.find( { "materials": "bronze" } )

    Saída:

    [
    {
    _id: ObjectId("6352c387b1fac2ee2e957f08"),
    name: 'The Thinker',
    type: 'sculpture',
    materials: [ 'bronze' ],
    year: 1904
    }
    ]

Para saber como criar um índice curinga que projeta campos específicos a serem cobertos, consulte as seguintes páginas:

Para saber mais sobre comportamentos para índices curinga, consulte:

Voltar

Incluir ou excluir campos

Nesta página