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

Como usar o preenchimento automático com o Atlas Search

Nesta página

  • Definir um índice com preenchimento automático
  • Executar uma query de preenchimento automático

Este tutorial descreve como criar um índice do Atlas Search e executar consultas de preenchimento automático para retornar resultados para palavras parciais. Isso é útil para recuperar resultados com precisão crescente à medida que mais caracteres são inseridos no campo de pesquisa do seu aplicativo. Você pode usar o operador autocompletar Atlas Search para consultar valores de campo que você indexa como o tipo de autocompletar Atlas Search .

Especificamente, este tutorial demonstra o seguinte:

  • Configure um índice do Atlas Search com o tipo preenchimento automático para a coleção sample_mflix.movies.

  • Como executar consultas do Atlas Search nos campos indexados na coleção sample_mflix.movies para uma palavra parcial.

Antes de começar, certifique-se de que seu Atlas cluster atenda aos requisitos descritos nos Pré-requisitos.

Para criar um índice do Atlas Search, você deve ter acesso do Project Data Access Admin ou superior ao projeto.

Você pode utilizar o tipo do Atlas Search autocomplete para indexar valores de texto em campos de string para preenchimento automático. Você pode consultar campos indexados como autocomplete tipo usando o operador de <a class=\"\" href=\" \">preenchimento automático.

Nesta seção, você cria um índice do Atlas Search que indexa os campos title e plot para preenchimento automático. A definição de índice executa as seguintes ações:

  • Cria termos indexáveis entre 2 e 15 caracteres, começando no lado esquerdo de cada palavra (tokenization: edgeGram).

  • IA ignora as marcas diacriticas, como acionadores ou tokens no índice e na consulta para retornar resultados com e sem marcas diacriticas (foldDiacritics: true).

1
  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.

2
  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

3
4
  • Para uma experiência abada, selecione a Pesquisa Atlas Visual Editor.

  • Para editar a definição de índice bruto, selecione a Pesquisa Atlas JSON Editor.

5
  1. No campo Index Name, digite autocomplete-tutorial.

    Se você nomear seu índice default, não precisará especificar um parâmetro index no estágio do pipeline $search . Se você der um nome personalizado ao seu índice, deverá especificar este nome no parâmetro index.

  2. Na seção Database and Collection, localize o banco de dados sample_mflix e selecione a coleção movies.

6

Você pode usar o Visual Editor do Atlas Search ou o JSON Editor do Atlas Search na interface de usuário do Atlas para criar o índice.

  1. Clique em Next.

  2. Clique em Refine Your Index.

  3. Clique em Add Field na seção Field Mappings.

  4. Clique em Quick Start for Text Fields se ainda não estiver selecionado e selecione o modelo Search-as-you-type no menu suspenso.

  5. Selecione title no menu suspenso Field Name.

  6. Clique em Add.

  7. Repita as etapas c a e para o campo plot.

  8. Clique em Save Changes.

  1. Substitua a definição padrão pela seguinte definição de índice.

    {
    "mappings": {
    "dynamic": false,
    "fields": {
    "title": {
    "type": "autocomplete",
    "tokenization": "edgeGram",
    "foldDiacritics": true,
    "minGrams": 2,
    "maxGrams": 15
    },
    "plot": {
    "type": "autocomplete",
    "tokenization": "edgeGram",
    "foldDiacritics": true,
    "minGrams": 2,
    "maxGrams": 15
    }
    }
    }
    }
  2. Clique em Next.

Para saber mais sobre as opções de configuração, consulte Como configurar propriedades de campo autocomplete.

7
8

Uma janela modal é exibida para que você saiba que seu índice está construindo. Clique no botão Close.

9

O índice deve levar cerca de um minuto para ser criado. Enquanto está se formando, a coluna Status mostra Build in Progress. Quando terminar de se formar, a coluna Status mostrará Active.


➤ Use o menu suspenso Selecione a linguagem para definir a linguagem do exemplo nesta página.


O operador autocomplete executa uma pesquisa por uma palavra ou frase que contém uma sequência de caracteres de uma string de entrada incompleta. Os campos que você pretende consultar com o operador autocomplete devem ser indexados com o tipo de dados de preenchimento automático na definição de índice da coleção. Para saber como configurar seu índice para preenchimento automático, consulte Como indexar campos para preenchimento automático.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
  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.

2

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.

  2. No menu suspenso Select data source, selecione seu 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.

3

Clique no botão Query à direita do índice para consultar.

4

Clique em Edit Query para visualizar uma amostra de sintaxe de consulta padrão no formato JSON .

5

Copie e cole a seguinte consulta no Query Editor e, em seguida, clique no botão Search no Query Editor.

[
{
$search: {
index: "autocomplete-tutorial",
autocomplete: {
query: "ger",
path: "title"
}
}
}
]
SCORE: 6.085907459259033 _id: "573a1390f29313caabcd50e5"
plot: "The cartoonist, Winsor McCay, brings the Dinosaurus back to life in th…"
genre: Array
runtime: 12
SCORE: 6.085907459259033 _id: "573a1393f29313caabcddae1"
plot: "Edmund, a young boy who lives in war-devastated Germany after the Seco…"
genres: Array
runtime: 78
SCORE: 6.085907459259033 _id: "573a1397f29313caabce6b75"
plot: "Germany in Autumn does not have a plot per se; it mixes documentary fo…"
genres: Array
runtime: 123
SCORE: 6.085907459259033 _id: "573a1397f29313caabce77b5"
plot: "Germany 1939. Hans and Lene marry the day before the war breaks out, a…"
genres: Array
runtime: 123
SCORE: 6.085907459259033 _id: "573a13d4f29313caabd99fa2"
plot: "A documentary on the German artist that includes glimpses at his studi…"
genres: Array
runtime: 97
SCORE: 6.046686172485352 _id: "573a1399f29313caabcedb50"
plot: "The story of the Apache chief and his armed resistance to the US Gover…"
genres: Array
runtime: 115
SCORE: 5.8947296142578125 _id: "573a13a5f29313caabd15dae"
num_mflix_comments: 1
genres: Array
runtime: 83
SCORE: 5.826231956481934 _id: "573a139bf29313caabcf36bd"
plot: "Geri sets up a chess game to play his greatest opponent - himself."
genres: Array
runtime: 4
SCORE: 5.772464752197266 _id: "573a13d2f29313caabd922de"
plot: "The true story of an Argentine family who lived with Josef Mengele wit…"
genres: Array
runtime: 93
SCORE: 5.772464752197266 _id: "573a13b4f29313caabd41bb7"
plot: "In 1928, Dr. Max Gerson, a German-Jewish researcher, stumbled upon a t…"
genres: Array
countries: Array
6

O Search Tester pode não exibir todos os campos nos documentos que ele retorna. Para exibir todos os campos, incluindo o campo que você especifica no caminho da consulta, expanda o documento nos resultados.

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
  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.

2

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.

  2. No menu suspenso Select data source, selecione seu 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.

3

Clique no botão Query à direita do índice para consultar.

4

Clique em Edit Query para visualizar uma amostra de sintaxe de consulta padrão no formato JSON.

5

Copie e cole a seguinte consulta no Query Editor e, em seguida, clique no botão Search no Query Editor.

[
{
$search: {
index: "autocomplete-tutorial",
compound: {
should: [{
autocomplete: {
query: "pri",
path: "title"
}
},
{
autocomplete: {
query: "pri",
path: "plot"
}
}],
minimumShouldMatch: 1
}
}
}
]
SCORE: 7.52535343170166 _id: "573a13e7f29313caabdc80cd"
plot: "Prison Terminal: The Last Days of Private Jack Hall is a moving cinema…"
genre: Array
runtime: 40
SCORE: 7.235145568847656 _id: "573a13adf29313caabd2b504"
plot: "Now settled in Genovia, Princess Mia faces a new revelation: she is be…"
genres: Array
runtime: 113
SCORE: 7.202958106994629 _id: "573a13b5f29313caabd43816"
plot: "A young fugitive prince and princess must stop a villain who unknowing…"
genres: Array
runtime: 116
SCORE: 7.201740264892578 _id: "573a139af29313caabcf0d54"
plot: "The first wedding anniversary of Princess Odette and Prince Derek is d…"
genres: Array
runtime: 71
SCORE: 7.174992561340332 _id: "573a1399f29313caabceeead"
plot: "Jane Austen's classic novel about the prejudice that occurred between …"
genres: Array
runtime: 327
SCORE: 7.173888206481934 _id: "573a13c1f29313caabd63a21"
plot: "A princess whose country has been invaded goes into hiding in Louisian…"
genres: Array
countries: Array
SCORE: 7.163987159729004 _id: "573a13eef29313caabdd51a6"
plot: "Follows the people racing to bring the hot new 3D printing technology …"
genres: Array
runtime: 100
SCORE: 7.155245780944824 _id: "573a13a5f29313caabd14adf"
plot: "When her father is captured by The Sheriff of Nottingham and Prince Jo…"
genres: Array
runtime: 88
SCORE: 7.146618843078613 _id: "573a139af29313caabcf0efc"
plot: "An Egyptian prince learns of his identity as a Hebrew and, later his d…"
genres: Array
runtime: 99
SCORE: 7.132328987121582 _id: "573a139af29313caabcf003b"
plot: "Two Russian soldiers, one battle-seasoned and the other barely into hi…"
genres: Array
runtime: 99
6

O Search Tester pode não exibir todos os campos nos documentos que ele retorna. Para exibir todos os campos, incluindo o campo que você especifica no caminho da consulta, expanda o documento nos resultados.

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1

Abra o mongosh em uma janela do terminal e conecte ao seu cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via mongosh.

2

Execute o seguinte comando no prompt mongosh:

use sample_mflix
3

As queries a seguir procuram filmes com os caracteres ger no campo title. A query inclui o estágio $limit para limitar a saída a 20 resultados e o estágio $project para excluir todos os campos, exceto title.

db.movies.aggregate([
{
$search: {
"index": "autocomplete-tutorial",
"autocomplete": {
"path": "title",
"query": "ger"
}
}
},
{
$limit: 20
},
{
$project: {
"_id": 0,
"title": 1
}
}
])
{ title: "Gertie the Dinosaur" },
{ title: "Germany Year Zero" },
{ title: "Germany in Autumn" },
{ title: "Germany Pale Mother" },
{ title: "Gerhard Richter - Painting" },
{ title: "Geronimo: An American Legend" },
{ title: "How to Live in the German Federal Republic" },
{ title: "Geri's Game" },
{ title: "The Gerson Miracle" },
{ title: "The German Doctor" },
{ title: "From Caligari to Hitler: German Cinema in the Age of the Masse"},
{ title: "From Caligari to Hitler: German Cinema in the Age of the Masses"},
{ title: "Gèraldine" },
{ title: "Gervaise" },
{ title: "Gertrud" },
{ title: "Germinal" },
{ title: "Gerry" },
{ title: "Gerontophilia" },
{ title: "Pionery-geroi" },
{ title: "The Good German" }

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1

Abra o mongosh em uma janela do terminal e conecte ao seu cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via mongosh.

2

Execute o seguinte comando no prompt mongosh:

use sample_mflix
3

A query a seguir pesquisa filmes com os caracteres pri no campo title e plot. A query inclui o estágio $limit para limitar a saída a cinco resultados e o estágio $project para excluir todos os campos, exceto title e plot.

1db.movies.aggregate([
2 {
3 "$search": {
4 "index": "autocomplete-tutorial",
5 "compound": {
6 "should": [{
7 "autocomplete": {
8 "query": "pri",
9 "path": "title"
10 }
11 },
12 {
13 "autocomplete": {
14 "query": "pri",
15 "path": "plot"
16 }
17 }],
18 "minimumShouldMatch": 1
19 }
20 }
21 },
22 {
23 "$limit": 5
24 },
25 {
26 "$project": {
27 "_id": 0,
28 "title": 1,
29 "plot": 1
30 }
31 }
32])
{
plot: 'Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ...',
title: 'Prison Terminal: The Last Days of Private Jack Hall'
}
{
plot: 'Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor.',
title: 'The Princess Diaries 2: Royal Engagement'
}
{
plot: 'A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time.',
title: 'Prince of Persia: The Sands of Time'
}
{
plot: 'The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ...',
title: 'The Swan Princess: Escape from Castle Mountain'
}
{
plot: "Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart.",
title: 'Pride and Prejudice'
}

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1

Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.

2

Na tela Database, clique no banco de dados sample_mflix e, em seguida, clique na coleção movies.

3

A consulta utiliza os seguintes estágios de pipeline:

  • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

  • Estágio $limit para limitar a saída a 20 resultados.

  • Estágio $project para excluir todos os campos, exceto title.

Para executar esta consulta no MongoDB Compass:

  1. Clique na aba Aggregations.

  2. Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.

    Na guia Aggregations da coleção movies , configure cada um dos seguintes estágios de pipeline selecionando o estágio na lista suspensa e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.

    estágio do pipeline
    Query
    $search
    {
    "index": "autocomplete-tutorial",
    "autocomplete": {
    "query": "ger",
    "path": "title"
    }
    }
    $limit
    20
    $project
    {
    "_id": 0,
    "title": 1,
    }

Se você habilitou o Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do $autocomplete:

1{ title: "Gertie the Dinosaur" },
2{ title: "Germany Year Zero" },
3{ title: "Germany in Autumn" },
4{ title: "Germany Pale Mother" },
5{ title: "Gerhard Richter - Painting" },
6{ title: "Geronimo: An American Legend" },
7{ title: "How to Live in the German Federal Republic" },
8{ title: "Geri's Game" },
9{ title: "The Gerson Miracle" },
10{ title: "The German Doctor" },
11{ title: "From Caligari to Hitler: German Cinema in the Age of the Masse"},
12{ title: "From Caligari to Hitler: German Cinema in the Age of the Masses"},
13{ title: "Gèraldine" },
14{ title: "Gervaise" },
15{ title: "Gertrud" },
16{ title: "Germinal" },
17{ title: "Gerry" },
18{ title: "Gerontophilia" },
19{ title: "Pionery-geroi" },
20{ title: "The Good German" }

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1

Abra o MongoDB Compass e conecte-se ao cluster. Para obter instruções detalhadas sobre a conexão, consulte Conectar via Compass.

2

Na tela Database, clique no banco de dados sample_mflix e, em seguida, clique na coleção movies.

3

A consulta utiliza os seguintes estágios de pipeline:

  • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

  • Estágio $limit para limitar a saída a 5 resultados.

  • Estágio $project para excluir todos os campos, exceto title e plot

Para executar esta consulta no MongoDB Compass:

  1. Clique na aba Aggregations.

  2. Clique em Select... e, em seguida, configure cada um dos seguintes estágios do pipeline, selecionando o estágio no menu suspenso e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.

    Na guia Aggregations da coleção movies , configure cada um dos seguintes estágios de pipeline selecionando o estágio na lista suspensa e adicionando a consulta para esse estágio. Clique em Add Stage para adicionar estágios adicionais.

    estágio do pipeline
    Query
    $search
    {
    "index": "autocomplete-tutorial",
    "compound": {
    "should": [{
    "autocomplete": {
    "query": "pri",
    "path": "title"
    }
    },
    {
    "autocomplete": {
    "query": "pri",
    "path": "plot"
    }
    }],
    "minimumShouldMatch": 1
    }
    }
    $limit
    5
    $project
    {
    "_id": 0,
    "title": 1,
    "plot": 1
    }

Se você habilitou o Auto Preview, o MongoDB Compass exibe os seguintes documentos ao lado da etapa de pipeline do $autocomplete:

1 {
2 plot: 'Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ...',
3 title: 'Prison Terminal: The Last Days of Private Jack Hall'
4 }
5 {
6 plot: 'Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor.',
7 title: 'The Princess Diaries 2: Royal Engagement'
8 }
9 {
10 plot: 'A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time.',
11 title: 'Prince of Persia: The Sands of Time'
12 }
13 {
14 plot: 'The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ...',
15 title: 'The Swan Princess: Escape from Castle Mountain'
16 }
17 {
18 plot: "Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart.",
19 title: 'Pride and Prejudice'
20 }

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
  1. Crie um novo diretório chamado basic-autocomplete-example e inicialize seu projeto com o comando dotnet new.

    mkdir basic-autocomplete-example
    cd basic-autocomplete-example
    dotnet new console
  2. Adicione o driver .NET/C# ao seu projeto como uma dependência.

    dotnet add package MongoDB.Driver
2
  1. Substitua o conteúdo do arquivo Program.cs pelo seguinte código.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

      • Estágio $limit para limitar a saída a 20 resultados.

      • Estágio $project para excluir todos os campos, exceto title.

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1using MongoDB.Bson;
    2using MongoDB.Bson.Serialization.Attributes;
    3using MongoDB.Bson.Serialization.Conventions;
    4using MongoDB.Driver;
    5using MongoDB.Driver.Search;
    6
    7public class AutocompleteBasicExample
    8{
    9 private const string MongoConnectionString = "<connection-string>";
    10
    11 public static void Main(string[] args)
    12 {
    13 // allow automapping of the camelCase database fields to our MovieDocument
    14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
    15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
    16
    17 // connect to your Atlas cluster
    18 var mongoClient = new MongoClient(MongoConnectionString);
    19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix");
    20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies");
    21
    22 // define and run pipeline
    23 var results = moviesCollection.Aggregate()
    24 .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "ger"), indexName: "autocomplete-tutorial")
    25 .Project<MovieDocument>(Builders<MovieDocument>.Projection
    26 .Include(movie => movie.Title)
    27 .Exclude(movie => movie.Id))
    28 .Limit(20)
    29 .ToList();
    30
    31 // print results
    32 foreach (var movie in results)
    33 {
    34 Console.WriteLine(movie.ToJson());
    35 }
    36 }
    37}
    38
    39[BsonIgnoreExtraElements]
    40public class MovieDocument
    41{
    42 [BsonIgnoreIfDefault]
    43 public ObjectId Id { get; set; }
    44 public string Title { get; set; }
    45}
  2. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

3
dotnet run basic-autocomplete-example.csproj
{ "title" : "Gertie the Dinosaur" }
{ "title" : "Germany Year Zero" }
{ "title" : "Germany in Autumn" }
{ "title" : "Germany Pale Mother" }
{ "title" : "Gerhard Richter - Painting" }
{ "title" : "Geronimo: An American Legend" }
{ "title" : "How to Live in the German Federal Republic" }
{ "title" : "Geri's Game" }
{ "title" : "The Gerson Miracle" }
{ "title" : "The German Doctor" }
{ "title" : "From Caligari to Hitler: German Cinema in the Age of the Masses" }
{ "title" : "From Caligari to Hitler: German Cinema in the Age of the Masses" }
{ "title" : "Gèraldine" }
{ "title" : "Gervaise" }
{ "title" : "Gertrud" }
{ "title" : "Germinal" }
{ "title" : "Gerry" }
{ "title" : "Gerontophilia" }
{ "title" : "Pionery-geroi" }
{ "title" : "The Good German" }

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
  1. Crie um novo diretório chamado advanced-autocomplete-example e inicialize seu projeto com o comando dotnet new.

    mkdir advanced-autocomplete-example
    cd advanced-autocomplete-example
    dotnet new console
  2. Adicione o driver .NET/C# ao seu projeto como uma dependência.

    dotnet add package MongoDB.Driver
2
  1. Substitua o conteúdo do arquivo Program.cs pelo seguinte código.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

      • Estágio $limit para limitar a saída a 5 resultados.

      • Estágio $project para excluir todos os campos, exceto title e plot

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1using MongoDB.Bson;
    2using MongoDB.Bson.Serialization.Attributes;
    3using MongoDB.Bson.Serialization.Conventions;
    4using MongoDB.Driver;
    5using MongoDB.Driver.Search;
    6
    7public class AutocompleteAdvancedExample
    8{
    9 private const string MongoConnectionString = "<connection-string>";
    10
    11 public static void Main(string[] args)
    12 {
    13 // allow automapping of the camelCase database fields to our MovieDocument
    14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
    15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
    16
    17 // connect to your Atlas cluster
    18 var mongoClient = new MongoClient(MongoConnectionString);
    19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix");
    20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies");
    21
    22 // define and run pipeline
    23 var results = moviesCollection.Aggregate()
    24 .Search(Builders<MovieDocument>.Search.Compound()
    25 .Should(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "pri"))
    26 .Should(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Plot, "pri"))
    27 .MinimumShouldMatch(1),
    28 indexName: "autocomplete-tutorial")
    29 .Project<MovieDocument>(Builders<MovieDocument>.Projection
    30 .Include(movie => movie.Plot)
    31 .Include(movie => movie.Title)
    32 .Exclude(movie => movie.Id))
    33 .Limit(5)
    34 .ToList();
    35
    36 // print results
    37 foreach (var movie in results)
    38 {
    39 Console.WriteLine(movie.ToJson());
    40 }
    41 }
    42}
    43
    44[BsonIgnoreExtraElements]
    45public class MovieDocument
    46{
    47 [BsonIgnoreIfDefault]
    48 public ObjectId Id { get; set; }
    49 public string Plot { get; set; }
    50 public string Title { get; set; }
    51}
  2. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

3
dotnet run advanced-autocomplete-example.csproj
{
"plot" : "Prison Terminal: The Last Days of Private Jack
Hall is a moving cinema verite documentary that breaks
through the walls of one of Americas oldest maximum
security prisons to tell the story ...",
"title" : "Prison Terminal: The Last Days of Private Jack Hall"
}
{
"plot" : "Now settled in Genovia, Princess Mia faces a new
revelation: she is being primed for an arranged marriage to
an English suitor.",
"title" : "The Princess Diaries 2: Royal Engagement"
}
{
"plot" : "A young fugitive prince and princess must stop a
villain who unknowingly threatens to destroy the world with
a special dagger that enables the magic sand inside to
reverse time.",
"title" : "Prince of Persia: The Sands of Time"
}
{
"plot" : "The first wedding anniversary of Princess Odette
and Prince Derek is distracted by field fires set by
Knuckles. His master Clavius, wants to conquer the world,
and he needs to capture a ...",
"title" : "The Swan Princess: Escape from Castle Mountain"
}
{
"plot" : "Jane Austen's classic novel about the prejudice
that occurred between the 19th century classes and the
pride which would keep lovers apart.",
"title" : "Pride and Prejudice"
}

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
  1. Crie um arquivo denominado autocomplete-query.go.

  2. Copie e cole o seguinte código no arquivo autocomplete-query.go.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

      • Estágio $limit para limitar a saída a 20 resultados.

      • Estágio $project para excluir todos os campos, exceto title.

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1package main
    2
    3import (
    4 "context"
    5 "fmt"
    6
    7 "go.mongodb.org/mongo-driver/bson"
    8 "go.mongodb.org/mongo-driver/mongo"
    9 "go.mongodb.org/mongo-driver/mongo/options"
    10)
    11
    12func main() {
    13 // connect to your Atlas cluster
    14 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>"))
    15 if err != nil {
    16 panic(err)
    17 }
    18 defer client.Disconnect(context.TODO())
    19
    20 // set namespace
    21 collection := client.Database("sample_mflix").Collection("movies")
    22
    23 // define pipeline stages
    24 searchStage := bson.D{{"$search", bson.D{{"index", "autocomplete-tutorial"}, {"autocomplete", bson.D{{"query", "ger"}, {"path", "title"}}}}}}
    25 limitStage := bson.D{{"$limit", 20}}
    26 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}}}}
    27 // run pipeline
    28 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage})
    29 if err != nil {
    30 panic(err)
    31 }
    32
    33 // print results
    34 var results []bson.D
    35 if err = cursor.All(context.TODO(), &results); err != nil {
    36 panic(err)
    37 }
    38 for _, result := range results {
    39 fmt.Println(result)
    40 }
    41}
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o seguinte comando para consultar sua collection:

    go run autocomplete-query.go
    [{title Gertie the Dinosaur}]
    [{title Germany Year Zero}]
    [{title Germany in Autumn}]
    [{title Germany Pale Mother}]
    [{title Gerhard Richter - Painting}]
    [{title Geronimo: An American Legend}]
    [{title How to Live in the German Federal Republic}]
    [{title Geri's Game}]
    [{title The Gerson Miracle}]
    [{title The German Doctor}]
    [{title From Caligari to Hitler: German Cinema in the Age of the Masses}]
    [{title From Caligari to Hitler: German Cinema in the Age of the Masses}]
    [{title Gèraldine}]
    [{title Gervaise}]
    [{title Gertrud}]
    [{title Germinal}]
    [{title Gerry}]
    [{title Gerontophilia}]
    [{title Pionery-geroi}]
    [{title The Good German}]

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
  1. Crie um arquivo denominado autocomplete-query.go.

  2. Copie e cole o seguinte código no arquivo autocomplete-query.go.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

      • Estágio $limit para limitar a saída a 5 resultados.

      • Estágio $project para excluir todos os campos, exceto title e plot

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1package main
    2
    3import (
    4 "context"
    5 "fmt"
    6
    7 "go.mongodb.org/mongo-driver/bson"
    8 "go.mongodb.org/mongo-driver/mongo"
    9 "go.mongodb.org/mongo-driver/mongo/options"
    10)
    11
    12func main() {
    13 // connect to your Atlas cluster
    14 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>"))
    15 if err != nil {
    16 panic(err)
    17 }
    18 defer client.Disconnect(context.TODO())
    19
    20 // set namespace
    21 collection := client.Database("sample_mflix").Collection("movies")
    22
    23 // define pipeline stages
    24 searchStage := bson.D{
    25 {"$search", bson.D{
    26 {"index", "autocomplete-tutorial"},
    27 {"compound", bson.D{
    28 {"should", bson.A{
    29 bson.D{
    30 {"autocomplete", bson.D{{"query", "pri"}, {"path", "title"}}},
    31 },
    32 bson.D{
    33 {"autocomplete", bson.D{{"query", "pri"}, {"path", "plot"}}},
    34 },
    35 }},
    36 {"minimumShouldMatch", 1},
    37 }},
    38 }},
    39 }
    40 limitStage := bson.D{{"$limit", 5}}
    41 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"plot", 1}, {"_id", 0}}}}
    42 // run pipeline
    43 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage})
    44 if err != nil {
    45 panic(err)
    46 }
    47
    48 // print results
    49 var results []bson.D
    50 if err = cursor.All(context.TODO(), &results); err != nil {
    51 panic(err)
    52 }
    53 for _, result := range results {
    54 fmt.Println(result)
    55 }
    56}
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o seguinte comando para consultar sua collection:

    go run autocomplete-query.go
    [
    {plot Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ...}
    {title Prison Terminal: The Last Days of Private Jack Hall}
    ]
    [
    {plot Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor.}
    {title The Princess Diaries 2: Royal Engagement}
    ]
    [
    {plot A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time.}
    {title Prince of Persia: The Sands of Time}
    ]
    [
    {plot The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ...}
    {title The Swan Princess: Escape from Castle Mountain}
    ]
    [
    {plot Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart.}
    {title Pride and Prejudice}
    ]

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
junit
4.11 ou versão superior
mongodb-driver-sync
4.3.0 ou uma versão superior
slf4j-log4j12
1.7.30 ou uma versão superior
2
  1. Crie um arquivo denominado AutocompleteQuery.java.

  2. Copie e cole o seguinte código no arquivo AutocompleteQuery.java.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

      • Estágio $limit para limitar a saída a 20 resultados.

      • Estágio $project para excluir todos os campos, exceto title.

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1import static com.mongodb.client.model.Aggregates.limit;
    2import static com.mongodb.client.model.Aggregates.project;
    3import static com.mongodb.client.model.Projections.excludeId;
    4import static com.mongodb.client.model.Projections.fields;
    5import static com.mongodb.client.model.Projections.include;
    6import com.mongodb.client.MongoClient;
    7import com.mongodb.client.MongoClients;
    8import com.mongodb.client.MongoCollection;
    9import com.mongodb.client.MongoDatabase;
    10import org.bson.Document;
    11import java.util.Arrays;
    12
    13public class AutocompleteQuery {
    14
    15 public static void main(String[] args) {
    16 // connect to your Atlas cluster
    17 String uri = "<connection-string>";
    18
    19 try (MongoClient mongoClient = MongoClients.create(uri)) {
    20 // set namespace
    21 MongoDatabase database = mongoClient.getDatabase("sample_mflix");
    22 MongoCollection<Document> collection = database.getCollection("movies");
    23
    24 // define pipeline
    25 Document agg = new Document("$search",
    26 new Document("index", "autocomplete-tutorial")
    27 .append("autocomplete", new Document("query", "ger").append("path", "title")));
    28 // run pipeline and print results
    29 collection.aggregate(Arrays.asList(agg,
    30 limit(20),
    31 project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson()));
    32 }
    33 }
    34}

    Observação

    Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:

    package com.mongodb.drivers;
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Compile e execute o arquivo AutocompleteQuery.java.

    javac AutocompleteQuery.java
    java AutocompleteQuery
    {"title": "Gertie the Dinosaur"}
    {"title": "Germany Year Zero"}
    {"title": "Germany in Autumn"}
    {"title": "Germany Pale Mother"}
    {"title": "Gerhard Richter - Painting"}
    {"title": "Geronimo: An American Legend"}
    {"title": "How to Live in the German Federal Republic"}
    {"title": "Geri's Game"}
    {"title": "The Gerson Miracle"}
    {"title": "The German Doctor"}
    {"title": "From Caligari to Hitler: German Cinema in the Age of the Masses"}
    {"title": "From Caligari to Hitler: German Cinema in the Age of the Masses"}
    {"title": "Gèraldine"}
    {"title": "Gervaise"}
    {"title": "Gertrud"}
    {"title": "Germinal"}
    {"title": "Gerry"}
    {"title": "Gerontophilia"}
    {"title": "Pionery-geroi"}
    {"title": "The Good German"}

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
junit
4.11 ou versão superior
mongodb-driver-sync
4.3.0 ou uma versão superior
slf4j-log4j12
1.7.30 ou uma versão superior
2
  1. Crie um arquivo denominado AutocompleteQuery.java.

  2. Copie e cole o seguinte código no arquivo AutocompleteQuery.java.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

      • Estágio $limit para limitar a saída a 5 resultados.

      • Estágio $project para excluir todos os campos, exceto title e plot

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1import static com.mongodb.client.model.Aggregates.limit;
    2import static com.mongodb.client.model.Aggregates.project;
    3import static com.mongodb.client.model.Projections.excludeId;
    4import static com.mongodb.client.model.Projections.fields;
    5import static com.mongodb.client.model.Projections.include;
    6import com.mongodb.client.MongoClient;
    7import com.mongodb.client.MongoClients;
    8import com.mongodb.client.MongoCollection;
    9import com.mongodb.client.MongoDatabase;
    10import org.bson.Document;
    11import java.util.Arrays;
    12
    13public class AutocompleteQuery {
    14
    15 public static void main(String[] args) {
    16 // connect to your Atlas cluster
    17 String uri = "<connection-string>";
    18
    19 try (MongoClient mongoClient = MongoClients.create(uri)) {
    20 // set namespace
    21 MongoDatabase database = mongoClient.getDatabase("sample_mflix");
    22 MongoCollection<Document> collection = database.getCollection("movies");
    23
    24 // define pipeline
    25 Document agg = new Document("$search",
    26 new Document("index", "autocomplete-tutorial")
    27 .append("compound",
    28 new Document("should", Arrays.asList(new Document("autocomplete",
    29 new Document("query", "pri")
    30 .append("path", "title")),
    31 new Document("autocomplete",
    32 new Document("query", "pri")
    33 .append("path", "plot"))))
    34 .append("minimumShouldMatch", 1L)));
    35 // run pipeline and print results
    36 collection.aggregate(Arrays.asList(agg,
    37 limit(5),
    38 project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson()));
    39 }
    40 }
    41}

    Observação

    Para executar o código de exemplo em seu ambiente Maven, adicione o seguinte acima das declarações de importação no seu arquivo:

    package com.mongodb.drivers;
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Compile e execute o arquivo AutocompleteQuery.java.

    javac AutocompleteQuery.java
    java AutocompleteQuery
    {
    plot: 'Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ...',
    title: 'Prison Terminal: The Last Days of Private Jack Hall'
    }
    {
    plot: 'Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor.',
    title: 'The Princess Diaries 2: Royal Engagement'
    }
    {
    plot: 'A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time.',
    title: 'Prince of Persia: The Sands of Time'
    }
    {
    plot: 'The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ...',
    title: 'The Swan Princess: Escape from Castle Mountain'
    }
    {
    plot: "Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart.",
    title: 'Pride and Prejudice'
    }

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
mongodb-driver-kotlin-coroutine
4.10.0 ou uma versão superior
2
  1. Crie um arquivo denominado AutocompleteQuery.kt.

  2. Copie e cole o seguinte código no arquivo AutocompleteQuery.kt.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

      • Estágio $limit para limitar a saída a 20 resultados.

      • Estágio $project para excluir todos os campos, exceto title.

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Projections.*
    4import com.mongodb.kotlin.client.coroutine.MongoClient
    5import kotlinx.coroutines.runBlocking
    6import org.bson.Document
    7
    8fun main() {
    9 // connect to your Atlas cluster
    10 val uri = "<connection-string>"
    11 val mongoClient = MongoClient.create(uri)
    12
    13 // set namespace
    14 val database = mongoClient.getDatabase("sample_mflix")
    15 val collection = database.getCollection<Document>("movies")
    16
    17 runBlocking {
    18 // define pipeline
    19 val agg = Document(
    20 "\$search",
    21 Document("index", "autocomplete-tutorial")
    22 .append("autocomplete", Document("query", "ger").append("path", "title"))
    23 )
    24
    25 // run pipeline and print results
    26 val resultsFlow = collection.aggregate<Document>(
    27 listOf(
    28 agg,
    29 limit(20),
    30 project(fields(excludeId(), include("title")))
    31 )
    32 )
    33 resultsFlow.collect { println(it) }
    34 }
    35 mongoClient.close()
    36}
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o arquivo AutocompleteQuery.kt.

    Ao executar o programa AutocompleteQuery.kt no seu IDE, ele imprime os seguintes documentos:

    Document{{title=Germany in Autumn}}
    Document{{title=Germany Pale Mother}}
    Document{{title=Gertie the Dinosaur}}
    Document{{title=Geronimo: An American Legend}}
    Document{{title=How to Live in the German Federal Republic}}
    Document{{title=Geri's Game}}
    Document{{title=The Gerson Miracle}}
    Document{{title=The German Doctor}}
    Document{{title=From Caligari to Hitler: German Cinema in the Age of the Masses}}
    Document{{title=From Caligari to Hitler: German Cinema in the Age of the Masses}}
    Document{{title=Gervaise}}
    Document{{title=Germinal}}
    Document{{title=Gerry}}
    Document{{title=Gèraldine}}
    Document{{title=Pionery-geroi}}
    Document{{title=Rece do gèry}}
    Document{{title=The Good German}}
    Document{{title=Berlin Is in Germany}}
    Document{{title=Almanya: Welcome to Germany}}
    Document{{title=Hitler: A Film from Germany}}

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
mongodb-driver-kotlin-coroutine
4.10.0 ou uma versão superior
2
  1. Crie um arquivo denominado AutocompleteQuery.kt.

  2. Copie e cole o seguinte código no arquivo AutocompleteQuery.kt.

    O exemplo de código executa as seguintes tarefas:

    • Importa pacotes e dependências do mongodb .

    • Estabelece uma ligação ao seu cluster Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

      • Estágio $limit para limitar a saída a 5 resultados.

      • Estágio $project para excluir todos os campos, exceto title e plot

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Projections.*
    4import com.mongodb.kotlin.client.coroutine.MongoClient
    5import kotlinx.coroutines.runBlocking
    6import org.bson.Document
    7
    8fun main() {
    9 // connect to your Atlas cluster
    10 val uri = "<connection-string>"
    11 val mongoClient = MongoClient.create(uri)
    12
    13 // set namespace
    14 val database = mongoClient.getDatabase("sample_mflix")
    15 val collection = database.getCollection<Document>("movies")
    16
    17 runBlocking {
    18 // define pipeline
    19 val agg = Document(
    20 "\$search",
    21 Document("index", "autocomplete-tutorial")
    22 .append(
    23 "compound",
    24 Document(
    25 "should", listOf(
    26 Document(
    27 "autocomplete",
    28 Document("query", "pri")
    29 .append("path", "title")
    30 ),
    31 Document(
    32 "autocomplete",
    33 Document("query", "pri")
    34 .append("path", "plot")
    35 )
    36 )
    37 )
    38 .append("minimumShouldMatch", 1L)
    39 )
    40 )
    41
    42 // run pipeline and print results
    43 val resultsFlow = collection.aggregate<Document>(
    44 listOf(
    45 agg,
    46 limit(5),
    47 project(fields(excludeId(), include("title", "plot")))
    48 )
    49 )
    50 resultsFlow.collect { println(it) }
    51 }
    52 mongoClient.close()
    53}
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o arquivo AutocompleteQuery.kt.

    Ao executar o programa AutocompleteQuery.kt no seu IDE, ele imprime os seguintes documentos:

    Document{{plot=Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ..., title=Prison Terminal: The Last Days of Private Jack Hall}}
    Document{{plot=Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor., title=The Princess Diaries 2: Royal Engagement}}
    Document{{plot=A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time., title=Prince of Persia: The Sands of Time}}
    Document{{plot=The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ..., title=The Swan Princess: Escape from Castle Mountain}}
    Document{{plot=Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart., title=Pride and Prejudice}}

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
  1. Crie um arquivo denominado autocomplete-query.js.

  2. Copie e cole o seguinte código no arquivo autocomplete-query.js.

    O exemplo de código executa as seguintes tarefas:

    • Importa mongodb, o driver do Node.js da MongoDB.

    • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

      • Estágio $limit para limitar a saída a 20 resultados.

      • Estágio $project para excluir todos os campos, exceto title.

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1const { MongoClient } = require("mongodb");
    2
    3// connect to your Atlas cluster
    4const uri =
    5 "<connection-string>";
    6
    7const client = new MongoClient(uri);
    8
    9async function run() {
    10 try {
    11 await client.connect();
    12
    13 // set namespace
    14 const database = client.db("sample_mflix");
    15 const coll = database.collection("movies");
    16
    17 // define pipeline
    18 const agg = [
    19 {$search: {index: "autocomplete-tutorial", autocomplete: {query: "ger", path: "title"}}},
    20 {$limit: 20},
    21 {$project: {_id: 0,title: 1}}
    22 ];
    23 // run pipeline
    24 const result = await coll.aggregate(agg);
    25
    26 // print results
    27 await result.forEach((doc) => console.log(doc));
    28 } finally {
    29 await client.close();
    30 }
    31}
    32run().catch(console.dir);
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o seguinte comando para consultar sua collection:

    node autocompelte-query.js
    { title: 'Gertie the Dinosaur' }
    { title: 'Germany Year Zero' }
    { title: 'Germany in Autumn' }
    { title: 'Germany Pale Mother' }
    { title: 'Gerhard Richter - Painting' }
    { title: 'Geronimo: An American Legend' }
    { title: 'How to Live in the German Federal Republic' }
    { title: "Geri's Game" }
    { title: 'The Gerson Miracle' }
    { title: 'The German Doctor' }
    { title: 'From Caligari to Hitler: German Cinema in the Age of the Masses' }
    { title: 'From Caligari to Hitler: German Cinema in the Age of the Masses' }
    { title: 'Gèraldine' }
    { title: 'Gervaise' }
    { title: 'Gertrud' }
    { title: 'Germinal' }
    { title: 'Gerry' }
    { title: 'Gerontophilia' }
    { title: 'Pionery-geroi' }
    { title: 'The Good German' }

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
  1. Crie um arquivo denominado autocomplete-query.js.

  2. Copie e cole o seguinte código no arquivo autocomplete-query.js.

    O exemplo de código executa as seguintes tarefas:

    • Importa mongodb, o driver do Node.js da MongoDB.

    • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

      • Estágio $limit para limitar a saída a 5 resultados.

      • Estágio $project para excluir todos os campos, exceto title e plot

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1const { MongoClient } = require("mongodb");
    2
    3// connect to your Atlas cluster
    4const uri =
    5 "<connection-string>";
    6
    7const client = new MongoClient(uri);
    8
    9async function run() {
    10 try {
    11 await client.connect();
    12
    13 // set namespace
    14 const database = client.db("sample_mflix");
    15 const coll = database.collection("movies");
    16
    17 // define pipeline
    18 const agg = [
    19 {
    20 '$search': {
    21 'index': 'autocomplete-tutorial',
    22 'compound': {
    23 'should': [
    24 {
    25 'autocomplete': {
    26 'query': 'pri',
    27 'path': 'title'
    28 }
    29 },
    30 {
    31 'autocomplete': {
    32 'query': 'pri',
    33 'path': 'plot'
    34 }
    35 }
    36 ],
    37 'minimumShouldMatch': 1
    38 }
    39 }
    40 },
    41 {
    42 '$limit': 5
    43 },
    44 {
    45 '$project': {
    46 '_id': 0,
    47 'title': 1,
    48 'plot': 1
    49 }
    50 }
    51 ];
    52 // run pipelines
    53 const result = await coll.aggregate(agg);
    54
    55 // print results
    56 await result.forEach((doc) => console.log(doc));
    57 } finally {
    58 await client.close();
    59 }
    60}
    61run().catch(console.dir);
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o seguinte comando para consultar sua collection:

    node autocomplete-query.js
    {
    plot: 'Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ...',
    title: 'Prison Terminal: The Last Days of Private Jack Hall'
    }
    {
    plot: 'Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor.',
    title: 'The Princess Diaries 2: Royal Engagement'
    }
    {
    plot: 'A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time.',
    title: 'Prince of Persia: The Sands of Time'
    }
    {
    plot: 'The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ...',
    title: 'The Swan Princess: Escape from Castle Mountain'
    }
    {
    plot: "Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart.",
    title: 'Pride and Prejudice'
    }

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Nesta seção, você se conectará ao seu cluster Atlas e executará as consultas de amostra no campo title na coleção sample_mflix.movies usando o operador autocomplete. Esta consulta de exemplo usa uma sequência de caracteres para localizar títulos de filmes que incluem palavras que começam com a cadeia de caracteres de entrada.

1
  1. Crie um arquivo denominado autocomplete-query.py.

  2. Copie e cole o seguinte código no arquivo autocomplete.py.

    O seguinte exemplo de código:

    • Importa pymongo, o driver Python do MongoDB.

    • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar no campo title usando o operador autocomplete para palavras que começam com os caracteres ger

      • Estágio $limit para limitar a saída a 20 resultados.

      • Estágio $project para excluir todos os campos, exceto title.

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1import pymongo
    2
    3# connect to your Atlas cluster
    4client = pymongo.MongoClient('<connection-string>')
    5
    6# define pipeline
    7pipeline = [
    8 {"$search": {"index": "autocomplete-tutorial", "autocomplete": {"query": "ger", "path": "title"}}},
    9 {"$limit": 20},
    10 {"$project": {"_id": 0, "title": 1}},
    11]
    12# run pipeline
    13result = client["sample_mflix"]["movies"].aggregate(pipeline)
    14
    15# print results
    16for i in result:
    17 print(i)
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o seguinte comando para consultar sua collection:

    python autocomplete-query.py
    {'title': 'Gertie the Dinosaur'}
    {'title': 'Germany Year Zero'}
    {'title': 'Germany in Autumn'}
    {'title': 'Germany Pale Mother'}
    {'title': 'Gerhard Richter - Painting'}
    {'title': 'Geronimo: An American Legend'}
    {'title': 'How to Live in the German Federal Republic'}
    {'title': "Geri's Game"}
    {'title': 'The Gerson Miracle'}
    {'title': 'The German Doctor'}
    {'title': 'From Caligari to Hitler: German Cinema in the Age of the Masses'}
    {'title': 'From Caligari to Hitler: German Cinema in the Age of the Masses'}
    {'title': 'G\xe8raldine'}
    {'title': 'Gervaise'}
    {'title': 'Gertrud'}
    {'title': 'Germinal'}
    {'title': 'Gerry'}
    {'title': 'Gerontophilia'}
    {'title': 'Pionery-geroi'}
    {'title': 'The Good German'}

Nesses resultados, os caracteres ger aparecem no início de uma palavra em todos os títulos. O Atlas Search retorna resultados que começam com a string de consulta especificada porque o campo title é indexado utilizando a estratégia de tokenização do edgeGram . Atlas Search inclui Gèraldine e Rece do gèry nos resultados porque definimos foldDiacritics como true.

Nesta seção, você se conectará ao seu cluster do Atlas e executará as queries de amostra nos campos title e plot na coleção sample_mflix.movies usando os operadores autocomplete e compound. Esta query de exemplo usa uma sequência de caracteres para localizar títulos de filmes e enredos correspondentes com palavras que começam com a mesma sequência de caracteres de entrada.

1
  1. Crie um arquivo denominado autocomplete-query.py.

  2. Copie e cole o seguinte código no arquivo autocomplete.py.

    O seguinte exemplo de código:

    • Importa pymongo, o driver Python do MongoDB e o módulo dns, que é necessário para conectar pymongo a Atlas usando uma string de conexão da lista de sementes de DNS.

    • Cria uma instância da classe MongoClient para estabelecer uma conexão com seu cluster do Atlas.

    • Utiliza os seguintes estágios do pipeline:

      • $search para pesquisar os campos title e plot usando o operador autocomplete para palavras que começam com os caracteres pri

      • Estágio $limit para limitar a saída a 5 resultados.

      • Estágio $project para excluir todos os campos, exceto title e plot

    • Itera sobre o cursor para imprimir os documentos que correspondem à consulta.

    1import pymongo
    2
    3# connect to your Atlas cluster
    4client = pymongo.MongoClient('<connection-string>')
    5
    6# define pipeline
    7pipeline = [
    8 {
    9 '$search': {
    10 'index': 'autocomplete-tutorial',
    11 'compound': {
    12 'should': [
    13 {
    14 'autocomplete': {
    15 'query': 'pri',
    16 'path': 'title'
    17 }
    18 }, {
    19 'autocomplete': {
    20 'query': 'pri',
    21 'path': 'plot'
    22 }
    23 }
    24 ],
    25 'minimumShouldMatch': 1
    26 }
    27 }
    28 },
    29 {
    30 '$limit': 5
    31 },
    32 {
    33 '$project': {
    34 '_id': 0, 'title': 1, 'plot': 1
    35 }
    36 }
    37]
    38# run pipeline
    39result = client["sample_mflix"]["movies"].aggregate(pipeline)
    40
    41# print results
    42for i in result:
    43 print(i)
  3. Antes de executar o exemplo, substitua <connection-string> por sua cadeia de conexão do Atlas. Certifique-se de que sua cadeia de conexão inclui as credenciais do usuário do banco de dados. Para saber mais, consulte Conectar via Drivers.

  4. Execute o seguinte comando para consultar sua collection:

    python autocomplete-query.py
    {
    plot: 'Prison Terminal: The Last Days of Private Jack Hall is a moving cinema verite documentary that breaks through the walls of one of Americas oldest maximum security prisons to tell the story ...',
    title: 'Prison Terminal: The Last Days of Private Jack Hall'
    }
    {
    plot: 'Now settled in Genovia, Princess Mia faces a new revelation: she is being primed for an arranged marriage to an English suitor.',
    title: 'The Princess Diaries 2: Royal Engagement'
    }
    {
    plot: 'A young fugitive prince and princess must stop a villain who unknowingly threatens to destroy the world with a special dagger that enables the magic sand inside to reverse time.',
    title: 'Prince of Persia: The Sands of Time'
    }
    {
    plot: 'The first wedding anniversary of Princess Odette and Prince Derek is distracted by field fires set by Knuckles. His master Clavius, wants to conquer the world, and he needs to capture a ...',
    title: 'The Swan Princess: Escape from Castle Mountain'
    }
    {
    plot: "Jane Austen's classic novel about the prejudice that occurred between the 19th century classes and the pride which would keep lovers apart.",
    title: 'Pride and Prejudice'
    }

Nesses resultados, os caracteres pri aparecem no início de uma palavra em todos os títulos e enredos. O Atlas Search retorna resultados que começam com a query especificada porque os campos title e plot são indexados usando a estratégia de tokenização edgeGram.

Voltar

Como classificar os resultados do Atlas Search