A partir do MongoDB 5.0, a opção wildcardProjection para índices curinga está incluída na assinatura do índice. Isso significa que você pode criar vários índices curinga com o mesmo padrão de chave, desde que as opções wildcardProjection não contenham os mesmos campos.
Exibição de assinatura de projeção
A partir do MongoDB 6.3, 6.0.5 e 5.0.16, o campo wildcardProjection armazena a projeção do índice na forma enviada. Versões anteriores do servidor podem ter armazenado a projeção de forma normalizada.
O servidor utiliza o índice da mesma maneira, mas você pode notar uma diferença na saída dos comandos listIndexes e db.collection.getIndexes() .
Exemplo
Considere o seguinte índice curinga em uma collection books :
db.books.createIndex( { "$**": 1 }, { wildcardProjection: { "author.name": 1, "author.website": 1 }, name: "authorWildcard" } )
O padrão da chave do índice é "$**". Você pode criar outro índice curinga com o mesmo padrão de chave se especificar um wildcardProjection diferente. Por exemplo:
db.books.createIndex( { "$**": 1 }, { wildcardProjection: { "publisher.name": 1 }, name: "publisherWildcard" } )
Para visualizar os índices criados, execute o método getIndexes() :
db.books.getIndexes()
Saída:
[ { v: 2, key: { _id: 1 }, name: '_id_' }, { v: 2, key: { '$**': 1 }, name: 'authorWildcard', wildcardProjection: { author: { website: true, name: true }, _id: false } }, { v: 2, key: { '$**': 1 }, name: 'publisherWildcard', wildcardProjection: { publisher: { name: true }, _id: false } } ]