Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

Como executar queries de pesquisa do MongoDB em campos em documentos incorporados

Este tutorial demonstra como indexar e executar queries do MongoDB Search em campos que estão dentro de uma array de documentos, mesmo quando a própria array de documentos está aninhada. Para habilitar queries nesses campos, indexe os campos do documento como o tipo embeddedDocuments.

O tutorial nesta página demonstra consultas em campos nos seguintes tipos de arrays:

  • Array de documentos.

  • Array de documentos dentro de um documento.

  • Array de documentos dentro de um array de documentos.

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

Expanda esta seção para aprender mais sobre a coleção de amostras, o índice e as queries usadas neste tutorial.

Para demonstrar como executar queries em relação a documentos incorporados, este tutorial orienta você pelas seguintes etapas:

  1. Crie uma coleção de amostra denominada schools com documentos embutidos em seu cluster.

  2. Configure um índice do MongoDB Search com campos embeddedDocuments configurados nos seguintes caminhos:

    • teachers Campo

    • teachers.classes Campo

    • clubs.sports Campo

  3. Execute queries $search que pesquisam os documentos incorporados na coleção schools usando o composto com embeddedDocument e text.

  4. Execute uma query $searchMeta em um campo de documento incorporado para obter uma contagem.

A coleção de amostra schools contém três documentos. Cada documento contém o name e o mascot da escola, o nome ''primeiro'' e last de cada professor, o classes que eles ensinam, incluindo o subject e grade, e os vários clubs disponível.

O índice para esta coleção especifica os seguintes documentos em arrays:

  • Os documentos das arrays nos caminhos teachers e teachers.classes são indexados como embeddedDocuments, e os campos dentro dos documentos são indexados dinamicamente.

  • Os documentos nas arrayes no caminho teachers também são indexados como o tipo de documento para suportar o realce, e os campos dentro dos documentos são indexados dinamicamente.

  • O documento no campo clubs é indexado como o tipo de documento com mapeamentos dinâmicos habilitados, e as arrays de documentos no campo clubs.sports são indexadas como o tipo embeddedDocuments com mapeamentos dinâmicos habilitados.

As queries de amostra do Atlas Search os documentos incorporados na coleção schools. As queries usam os seguintes estágios de pipeline:

  • $search para pesquisar a collection.

  • $project para incluir e excluir campos da coleção e adicionar um campo denominado score nos resultados. Para consultas que permitem fazer destaques, o estágio $project também adiciona um novo campo chamado highlights, que contém as informações de destaque.

Os tutoriais demonstram as seguintes queries:

Esta query demonstra uma pesquisa em um campo dentro de um array de documentos.

Ele pesquisa no caminho teachers os professores com o primeiro nome John e especifica uma preferência por professores com o sobrenome Smith. Ele também habilita fazer destaques no campo de nome last.

Essa query demonstra uma pesquisa em um campo dentro de uma array de documentos que está aninhada em um documento.

Ele procura escolas que tenham clubes esportivos que ofereçam aos alunos a oportunidade de jogar dodgeball ou frisbee no caminho clubs.sports.

Esta consulta é composta e pesquisa campos dentro dos seguintes arrays:

  • Array de documentos.

  • Array de documentos aninhados dentro de um array de documentos.

Ela pesquisa instituições que têm um professor lecionando science para a 12th série no caminho teachers.classes, dando preferência a professores com sobrenome Smith que lecionam essa matéria. Ele também permite realçar o campo subject dentro do array classes dos documentos que está aninhado dentro do array teachers de documentos.

Observação

O tutorial para seu cluster também inclui uma consulta $searchMeta para obter uma contagem do número de escolas que oferecem aulas em cada série.

Este tutorial demonstra amostras de queries do MongoDB Search em campos em documentos incorporados. Para saber mais sobre essas queries, consulte Sobre este tutorial.