Menu Docs
Página inicial do Docs
/
Atlas
/ /

Use visualizações com Atlas Search

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, suporte tipos de dados ou modelos de dados incompatíveis, entre outros.

Os exemplos a seguir usam os bancos de dados sample_mflix e sample_airbnb de exemplo.

Observação

Desambiguação

Esta página explora 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.

Você deve usar o MongoDB 8.0 ou superior.

Para editar uma visualização, você deve ter uma função de Usuário administrador e usar o comando de banco de dados collMod.

  • O Atlas Search oferece suporte a visualizações 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 suporta definições de visualização com operadores que produzem resultados dinâmicos, como a variável de sistema $$USER_ROLES e o operador de agregação $rand.

  • As consultas do Atlas Search retornam os documentos originais como aparecem na coleção de origem.

Para criar uma visualização, você deve ter o privilégio createCollection.

Você pode indexar parcialmente uma coleção para filtrar documentos. O exemplo a seguir cria uma visualização na coleção sample_mflix.movies para que você possa pesquisar apenas filmes lançados após 1° de janeiro de 2000.

1

Para saber mais, consulte Conectar via mongosh.

2
use sample_mflix
3
db.createView(
"movies_ReleasedAfter2000",
"movies",
[
{
$match: {
$expr: {
$gt: [
"$released",
ISODate("2000-01-01")
]
}
}
}
]
)
4

AVISO: Melhorias de navegação em andamento No momento, estamos implementando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na IU do Atlas, consulte a documentação de pré-visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

5

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver vários clusters, selecione o cluster que deseja usar no menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

6
7

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:

  • Index Name: releasedAfter2000Index

  • Database and Collection:

    • sample_mflix

    • movies_ReleasedAfter2000

Configuration Method

For a guided experience, select Visual Editor.

To edit the raw index definition, select JSON Editor.

Observação

O índice do Atlas Search é nomeado default por padrão. Se você mantiver esse nome, seu índice será o índice de pesquisa padrão para qualquer consulta do Atlas Search que não especifique uma opção index diferente nos operadores. Se você estiver criando vários índices, recomendamos que mantenha uma convenção de nomenclatura consistente e descritiva em todos os seus índices.

8

O Atlas exibe um aviso breve e não interativo para informar que seu índice está sendo construído.

9

O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo StatusBuild in Progress. Quando o índice terminar de construir, o campo StatusActive.

Observação

Collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.

10

Observação

O exemplo a seguir consulta o índice releasedAfter2000Index executando o comando .aggregate na visualização chamada movies_ReleasedAfter2000. Se o seu cluster está executando o MongoDB v8.0, você deve consultar a coleção de origem (por exemplo, movies) usando o índice na visualização. Faça upgrade para o MongoDB v8.1+ para consultar a visualização diretamente.

use sample_mflix
1db.db.movies_ReleasedAfter2000.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')
}
}
]

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 tipos Decimal128, transformamos os valores em Double.

1

Para saber mais, consulte Conectar via mongosh.

2
use sample_airbnb
3
db.createView(
"listingsAndReviews_totalPrice",
"listingsAndReviews",
[
{
$addFields: {
totalPrice: {
$add: [
{
$ifNull: [{ $toDouble: "$price" }, 0]
},
{
$ifNull: [{ $toDouble: "$cleaning_fee" }, 0]
}
]
}
}
}
]
)
4

AVISO: Melhorias de navegação em andamento No momento, estamos implementando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na IU do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

5

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver vários clusters, selecione o cluster que deseja usar no menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

6
7

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:

  • Index Name: totalPriceIndex

  • Database and Collection:

    • sample_airbnb

    • listingsAndReviews_totalPrice

Configuration Method

For a guided experience, select Visual Editor.

To edit the raw index definition, select JSON Editor.

Observação

O índice do Atlas Search é nomeado default por padrão. Se você mantiver esse nome, seu índice será o índice de pesquisa padrão para qualquer consulta do Atlas Search que não especifique uma opção index diferente nos operadores. Se você estiver criando vários índices, recomendamos que mantenha uma convenção de nomenclatura consistente e descritiva em todos os seus índices.

8
  1. Especifique a seguinte definição de índice:

    {
    "mappings": {
    "dynamic": true
    },
    "storedSource": {
    "include": [
    "totalPrice"
    ]
    }
    }
  2. Clique em Next.

9

O Atlas exibe um aviso breve e não interativo para informar que seu índice está sendo construído.

10

O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo StatusBuild in Progress. Quando o índice terminar de construir, o campo StatusActive.

Observação

Collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.

11

Observação

O exemplo a seguir consulta o índice totalPriceIndex executando o comando .aggregate na visualização chamada listingsAndReviews_totalPrice. Se o seu cluster está executando o MongoDB v8.0, você deve consultar a coleção de origem (por exemplo, listingsAndReviews) usando o índice na visualização. Faça upgrade para o MongoDB v8.1+ para consultar a visualização diretamente.

use sample_airbnb
1db.listingsAndReviews_totalPrice.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 }
]

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.

O exemplo a seguir retorna os pipelines na visualização movies_ReleasedAfter2000.

1db.getCollectionInfos({ name: "movies_ReleasedAfter2000" })[0].options.pipeline
[
{
'$match': {
'$expr': { '$gt': [ '$released', ISODate('2000-01-01T00:00:00.000Z') ] }
}
}
]

Para índices criados em visualizações, o Atlas Search aplica as transformações ou filtros que você define no pipeline de visualização no momento da query e no momento da replicação. Embora transformações triviais ou filtros no pipeline de visualização geralmente resultem em impacto insignificante no desempenho, transformações complexas ou filtros muito seletivos no pipeline de visualização podem retardar significativamente a query ou a replicação. Se você quiser executar uma transformação pesada nos documentos ou aplicar um filtro altamente seletivo, considere criar uma visualização materializada com documentos já transformados ou filtrados. Você pode avaliar o desempenho da visualização comparando a latência da query executada com a visualização e com a sua coleção de origem.

Os índices mudam para o status FAILED nos seguintes cenários:

  • Você cria um índice em uma View que é incompatível com o Atlas Search.

  • Você edita uma View 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 visualização.

    Por exemplo, se uma visualização for criada sobre outra visualização e você alterar a fonte da visualização pai para outra coleção.

    Observação

    Essa limitação também se aplica se uma visualização 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 mudam para o status STALE 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 uma array, a replicação falha. Certifique-se de que sua visualização funcione com todos os documentos na coleção sem erros.

  • Se a definição da visualização causar uma falha de agregação enquanto um índice READY for, o índice se STALE tornará. O índice retornará para READY depois que você resolver o documento ou alterar a definição de visualização para que ela não falhe mais.STALE Quando, o índice permanece consultável. Se o índice cair do oplog, uma reconstrução do índice será acionada.

  • 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á para READY 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.

Esse erro aparece quando você faz query de uma visualização usando uma versão do MongoDB anterior a 8.1.

  • Se você usa uma versão do MongoDB anterior a 8.0, recomendamos que atualize para 8.1+ para consultar a visualização diretamente. Você pode atualizar para 8.0 para consultar a coleção de origem.

  • Se você usar o MongoDB 8.0, deverá consultar o índice de visualização em relação à collection de origem. Por exemplo, execute .aggregate() na collection em vez de na visualização.

Quando você cria um índice Atlas Search em uma visualização, o processo mongot executa as mesmas tarefas que quando você cria um índice Atlas Search em uma coleção regular. O processo mongot:

  1. Cria índices de Atlas Search com base nas regras na index definition para a collection.

  2. Monitores fluxos de alterações para o estado atual dos documentos e índices para as coleções para as quais você definiu Atlas Search indexes.

  3. 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 Atlas Search em uma View, a definição da View é aplicada durante as etapas 1 e 2, e os documentos transformados são armazenados no índice Atlas Search em disco.

Para saber mais sobre visualizações, consulte Visualizações.

Para criar um índice do Atlas Vector Search em uma visualização, consulte Utilizar visualizações com o Atlas Vector Search.

Voltar

Múltiplas coleções

Nesta página