Use Visualizações do MongoDB para transformar documentos e filtrar coleções para o Atlas Search
Nesta página
Você pode criar um índice do Atlas Search em uma Visualização para transformar documentos e coleções, permitindo que você indexe parcialmente uma coleção, ofereça suporte a tipos de dados ou modelos de dados incompatíveis e muito mais.
Observação
O uso de Visualizações do MongoDB com o Atlas Search está disponível como um recurso de visualização prévia. O recurso e a documentação correspondente podem mudar a qualquer momento durante o período de Pré-visualização.
Os exemplos a seguir usam os bancos de dados de amostra sample_mflix e sample_airbnb.
Observação
Desambiguação
Esta página discute visualizações padrão. Para saber mais sobre visualizações materializadas sob demanda, consulte Visualizações materializadas sob demanda.
Para aprender sobre as diferenças entre os tipos de visualização, consulte Comparação com visualizações materializadas sob demanda.
Requisitos
Você deve usar:
MongoDB 8.0 ou superior.
Durante o período de pré-visualização, você deve usar:
mongosh
ou Compass para criar e gerenciar visualizações no MongoDB.A IU do Atlas e a API de Administração do Atlas para criar índices de pesquisa do Atlas Search em visualizações. O suporte para
mongosh
, Compass e Drivers estará disponível quando esse recurso estiver disponível para o público em geral.
Para editar uma visualização, você deve ter uma função de User Admin e usar o comando de banco de dados collMod
.
Limitações
O Atlas Search oferece suporte a Views somente para
$expr
nas seguintes etapas:Os nomes de índice devem ser únicos em uma coleção de origem e em todas as suas visualizações.
O Atlas Search não oferece suporte a definições de visualização com variáveis que produzem resultados dinâmicos, como
$USER_ROLES
e$random
.As consultas do Atlas Search retornam os documentos originais como aparecem na coleção de origem.
Exemplo: Filtrar documentos
Para criar uma View, você deve ter o privilégio createCollection
.
Você pode indexar parcialmente uma coleção para filtrar documentos. O exemplo a seguir cria uma View na coleção sample_mflix.movies
para que você possa pesquisar apenas filmes lançados após 1 de janeiro de 2000.
Conecte-se ao cluster do Atlas usando mongosh
.
Para saber mais, consulte Conectar via mongosh
.
No Atlas, acesse a página Clusters do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Inicie a configuração do seu índice.
Faça as seguintes seleções na página e clique em Next.
Search Type | Selecione o tipo de índice Atlas Search. |
Index Name and Data Source | Especifique as seguintes informações:
|
Configuration Method | Para uma experiência guiada, selecione Visual Editor. Para editar a definição do índice, selecione JSON Editor. |
Verifique o status.
O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo Status lê Build in Progress. Quando o índice terminar de construir, o campo Status lê Active.
Observação
Collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.
Execute uma query no índice parcial releasedAfter2000Index
.
Observação
O exemplo a seguir consulta o índice releasedAfter2000Index
executando o comando .aggregate
na coleção de origem movies
. Durante o período de Pré-visualização, você deve query os índices de pesquisa criados nas Visualizações usando a coleção de origem (movies
) da Visualização. Se você query a Visualização (movies_ReleasedAfter2000
), o Atlas Search não retornará resultados.
use sample_mflix
1 db.movies.aggregate([ 2 { 3 $search: { 4 index: "releasedAfter2000Index", 5 text: { 6 path: "title", 7 query: "foo" 8 }, 9 sort: { 10 released: 1 11 } 12 } 13 } 14 ])
[ { _id: ObjectId('573a13d2f29313caabd929f8'), plot: "Rising from the ashes of Nirvana, the Foo Fighters became a Grammy-winning sensation on their own. Sixteen years of the band's history comes to life in this documentary, from their demo ...", genres: [ 'Documentary', 'Music' ], runtime: 150, cast: [ 'Shawn Cloninger', 'William Goldsmith', 'Jessy Greene', 'Dave Grohl' ], num_mflix_comments: 0, poster: 'https://m.media-amazon.com/images/M/MV5BMzE4OTczMTgxM15BMl5BanBnXkFtZTcwNTU1NjQxOA@@._V1_SY1000_SX677_AL_.jpg', title: 'Foo Fighters: Back and Forth', fullplot: `Rising from the ashes of Nirvana, the Foo Fighters became a Grammy-winning sensation on their own. Sixteen years of the band's history comes to life in this documentary, from their demo tapes through the creation of their 2011 album, "Wasting Light."`, languages: [ 'English' ], released: ISODate('2011-04-05T00:00:00.000Z'), directors: [ 'James Moll' ], awards: { wins: 1, nominations: 1, text: '1 win & 1 nomination.' }, lastupdated: '2015-08-19 00:00:25.937000000', year: 2011, imdb: { rating: 8.4, votes: 3745, id: 1853563 }, countries: [ 'USA' ], type: 'movie', tomatoes: { viewer: { rating: 4.4, numReviews: 857, meter: 96 }, dvd: ISODate('2011-08-08T00:00:00.000Z'), website: 'http://us.foofightersfilm.com/', production: 'Cinedigm Digital Cinema', lastUpdated: ISODate('2015-09-12T18:42:01.000Z') } } ]
Exemplo: Adicionar ou Modificar Campos
O exemplo a seguir permite que você pesquise a coleção sample_airbnb.listingsAndReviews
por acomodações com base em um novo campo totalPrice
, que é a soma dos campos price
e cleaningFee
. Além disso, como o Atlas Search não oferece suporte para os tipos Decimal128
, transformamos os valores em Double
.
Conecte-se ao cluster do Atlas usando mongosh
.
Para saber mais, consulte Conectar via mongosh
.
No Atlas, acesse a página Clusters do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Inicie a configuração do seu índice.
Faça as seguintes seleções na página e clique em Next.
Search Type | Selecione o tipo de índice Atlas Search. |
Index Name and Data Source | Especifique as seguintes informações:
|
Configuration Method | Para uma experiência guiada, selecione Visual Editor. Para editar a definição do índice, selecione JSON Editor. |
Verifique o status.
O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo Status lê Build in Progress. Quando o índice terminar de construir, o campo Status lê Active.
Observação
Collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.
Execute uma consulta no índice totalPriceIndex
.
Observação
O exemplo a seguir consulta o índice totalPriceIndex
executando o comando .aggregate
na coleção de origem listingsAndReviews
. Durante o período de Pré-visualização, você deve query os índices de pesquisa criados nas Visualizações usando a coleção de origem (listingsAndReviews
) da Visualização. Se você query a Visualização (listingsAndReviews_totalPrice
), o Atlas Search não retornará resultados.
use sample_airbnb
1 db.listingsAndReviews.aggregate([ 2 { 3 $search: { 4 index: "totalPriceIndex", 5 range: { 6 path: "totalPrice", 7 lte: 300 8 }, 9 returnStoredSource: true 10 } 11 } 12 ])
[ { _id: '10006546', totalPrice: 115 }, { _id: '1001265', totalPrice: 215 }, { _id: '10021707', totalPrice: 40 }, { _id: '1003530', totalPrice: 270 }, { _id: '10038496', totalPrice: 269 }, { _id: '10051164', totalPrice: 250 }, { _id: '10057447', totalPrice: 50 }, { _id: '10057826', totalPrice: 205 }, { _id: '10059244', totalPrice: 43 }, { _id: '10066928', totalPrice: 140 }, { _id: '10082422', totalPrice: 60 }, { _id: '10083468', totalPrice: 40 }, { _id: '10084023', totalPrice: 231 }, { _id: '10091713', totalPrice: 231 }, { _id: '10092679', totalPrice: 58 }, { _id: '10096773', totalPrice: 205 }, { _id: '10112159', totalPrice: 90 }, { _id: '10117617', totalPrice: 55 }, { _id: '10120414', totalPrice: 150 }, { _id: '10133554', totalPrice: 121 } ]
Editar uma Visualização
O exemplo a seguir atualiza a visualização movies_ReleasedAfter2000
do MongoDB para filmes anteriores a 2000.
db.runCommand( { collMod: "movies_ReleasedAfter2000", viewOn: "movies", "pipeline": [ { $match: { $expr: { $lt: [ "$released", ISODate("2000-01-01T00") ] } } } ] } )
Depois de executar este comando, o Atlas Search detecta automaticamente a alteração na definição da visualização e realiza uma reindexação sem interrupção.
Retorne os Pipelines para uma Visualização
O exemplo a seguir retorna os pipelines na visualização movies_ReleasedAfter2000
.
1 db.getCollectionInfos({ name: "movies_ReleasedAfter2000" })[0].options.pipeline
[ { '$match': { '$expr': { '$gt': [ '$released', ISODate('2000-01-01T00:00:00.000Z') ] } } } ]
Solução de problemas
Os índices mudam para o status FAILED
nos seguintes cenários:
Você cria um índice em uma visualização que é incompatível com o Atlas Search.
Você edita uma visualização de uma forma que não atende aos requisitos de compatibilidade do Atlas Search.
Você remove ou altera a coleção de origem de uma Exibição.
Por exemplo, se uma View for criada sobre outra View e você alterar a fonte da View pai para outra coleção.
Observação
Essa limitação também se aplica se uma View for descendente de outras visualizações. Por exemplo, você não pode alterar ou remover a coleção de origem da qual todos os descendentes se originam.
Os índices são interrompidos nos seguintes cenários:
Aviso
Se o pipeline de agregação definido na sua visualização for incompatível com os documentos da coleção, a replicação de pesquisa falhará. Por exemplo, se uma expressão $toDouble
atuar em um campo de documento que contém um array, a replicação falha. Certifique-se de que sua View funcione com todos os documentos na coleção sem erros.
Se a definição de View causar uma falha de agregação enquanto um índice está
READY
, o índice torna-seSTALE
. O índice voltará paraREADY
após você resolver o documento ou modificar a definição de exibição para que não falhe mais. No entanto, o índice é consultável até que a replicação seja removida automaticamente do oplog.Se a definição de visualização causar uma falha no pipeline de agregação enquanto o índice estiver
BUILDING
, a construção do índice ficará travada até que você corrija o documento. O índice retornará paraREADY
após você resolver o documento ou modificar a definição de exibição para que não falhe mais.
Você pode visualizar os status do índice na IU do Atlas na página de detalhes do status do índice.
Processo de Índice
Quando você cria um índice do Atlas Search em uma View, o processo mongot
realiza as mesmas tarefas que quando você cria um índice do Atlas Search em uma coleção regular. O processo mongot
:
Cria índices de Atlas Search com base nas regras na index definition para a collection.
Monitora change streams para o estado atual dos documentos e índices para as coleções para as quais você definiu os índices do Atlas Search.
Processa queries do Atlas Search e retorna os IDs dos documentos e outros metadados da pesquisa dos documentos correspondentes ao
mongod
, que então faz uma pesquisa completa do documento e retorna os resultados ao cliente.
Quando você cria um índice de pesquisa do Atlas Search em uma visualização, a definição da visualização é aplicada durante as etapas 1 e 2, e os documentos transformados são armazenados no índice de pesquisa do Atlas Search em disco.
Saiba mais
Para saber mais sobre visualizações, consulte Visualizações.
Para criar um índice do Atlas Vector Search em uma View, consulte Use as Views do MongoDB para transformar documentos e filtrar coleções para o Atlas Vector Search.