Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Retrieve MongoDB Data

Neste guia, você pode aprender como recuperar dados de coleções MongoDB usando Laravel MongoDB. Este guia descreve os métodos do modelo Eloquent que você pode usar para recuperar dados e fornece exemplos de diferentes tipos de operações de localização.

Para saber mais sobre os modelos Eloquent na integração com o Laravel, consulte a seção Modele seus dados .

Para executar os exemplos de código neste guia, conclua o tutorial Início Rápido . Este tutorial fornece instruções sobre como configurar uma instância do MongoDB Atlas com dados de amostra e criar os seguintes arquivos em seu aplicativo web Laravel:

  • Movie.php arquivo, que contém um modelo Movie para representar documentos na coleção movies

  • MovieController.php arquivo, que contém uma função show() para executar operações do banco de dados

  • browse_movies.blade.php arquivo, que contém código HTML para exibir os resultados das operações do reconhecimento de data center

As seções a seguir descrevem como editar os arquivos em seu aplicativo Laravel para executar os exemplos de código da operação e visualizar o resultado esperado.

Você pode usar o mapeador objeto-relacional (ORM) Eloquent do Laravel para criar modelos que representam coleções do MongoDB e métodos de cadeia neles para especificar critérios de query.

Para recuperar documentos que correspondam a um conjunto de critérios, chame o método where() no modelo Eloquent correspondente da coleção e, em seguida, passe um filtro de query para o método.

Dica

Retrieve One Document

O método where() recupera todos os documentos correspondentes. Para recuperar o primeiro documento correspondente, você pode encadear o método first(). Para saber mais e ver um exemplo, consulte a seção Recuperar o primeiro resultado deste guia.

Um filtro de query especifica os requisitos de valor do campo e instrui a operação de localização a retornar apenas documentos que atendam a esses requisitos.

Você pode utilizar uma das seguintes chamadas de método do where() para construir uma query:

  • where('<field name>', <value>) cria uma consulta que corresponde a documentos nos quais o campo de destino tem o valor exato especificado

  • where('<field name>', '<comparison operator>', <value>) cria uma query que corresponde a documentos em que o valor do campo de destino atende aos critérios de comparação

Para aplicar vários conjuntos de critérios à operação de localizar, você pode encadear uma série de métodos do where() juntos.

Após construir sua query utilizando o método where() , encadeie o método get() para recuperar os resultados da query.

Este exemplo chama dois métodos where() no modelo Movie Eloquent para recuperar documentos que atendam aos seguintes critérios:

  • year campo tem um valor de 2010

  • imdb.rating campo aninhado tem um valor maior que 8.5

Use a seguinte sintaxe para especificar a query:

$movies = Movie::where('year', 2010)
->where('imdb.rating', '>', 8.5)
->get();

Para ver os resultados da query na exibição browse_movies , edite a função show() no arquivo MovieController.php para se assemelhar ao código a seguir:

class MovieController
{
public function show()
{
$movies = Movie::where('year', 2010)
->where('imdb.rating', '>', 8.5)
->get();
return view('browse_movies', [
'movies' => $movies
]);
}
}
Title: Inception
Year: 2010
Runtime: 148
IMDB Rating: 8.8
IMDB Votes: 1294646
Plot: A thief who steals corporate secrets through use of dream-sharing
technology is given the inverse task of planting an idea into the mind of a CEO.
Title: Senna
Year: 2010
Runtime: 106
IMDB Rating: 8.6
IMDB Votes: 41904
Plot: A documentary on Brazilian Formula One racing driver Ayrton Senna, who won the
F1 world championship three times before his death at age 34.

Para saber como executar queries usando o construtor de queries Laravel em vez do Eloquent ORM, consulte a página Construtor de queries.

Você pode especificar um filtro de consulta para corresponder aos elementos do campo de matriz ao recuperar documentos. Se seus documentos contiverem um campo de array , você poderá fazer a correspondência entre os documentos com base no fato de o valor contiver todos ou alguns elementos de array especificados.

Você pode usar uma das seguintes chamadas de método where() para criar uma query em um campo de array :

  • where('<array field>', <array>) cria uma query que corresponde a documentos em que o valor do campo de array é exatamente o de array especificado

  • where('<array field>', 'in', <array>) cria uma query que corresponde a documentos nos quais o valor do campo de array contém um ou mais dos elementos de array especificados

Após construir sua query utilizando o método where() , encadeie o método get() para recuperar os resultados da query.

Selecione a partir das seguintes abas Exact Array Match e Element Match para visualizar a sintaxe de query para cada padrão:

Este exemplo recupera documentos em que a matriz countries é exatamente ['Indonesia', 'Canada']:

$movies = Movie::where('countries', ['Indonesia', 'Canada'])
->get();

Este exemplo recupera documentos nos quais o array countries contém um dos valores no array ['Canada', 'Egypt']:

$movies = Movie::where('countries', 'in', ['Canada', 'Egypt'])
->get();

Para saber como consultar campos de array usando o construtor de query Laravel em vez do Eloquent ORM, consulte a seção Exemplo de elementos de array de correspondência no guia Construtor de query.

Para recuperar o primeiro documento que corresponde a um conjunto de critérios, use o método where() seguido pelo método first() .

Encadeie o método orderBy() a first() para obter resultados consistentes ao fazer query de um valor único. Se você omitir o método orderBy() , o MongoDB retornará os documentos correspondentes de acordo com a ordem natural dos documentos ou como eles aparecem na coleção.

Este exemplo faz uma query em documentos em que o valor do campo runtime é 30 e retorna o primeiro documento correspondente de acordo com o valor do campo _id .

Use a seguinte sintaxe para especificar a query:

$movie = Movie::where('runtime', 30)
->orderBy('_id')
->first();

Para ver os resultados da query na exibição browse_movies , edite a função show() no arquivo MovieController.php para se assemelhar ao código a seguir:

class MovieController
{
public function show()
{
$movie = Movie::where('runtime', 30)
->orderBy('_id')
->first();
return view('browse_movies', [
'movies' => $movie
]);
}
}
Title: Statues also Die
Year: 1953
Runtime: 30
IMDB Rating: 7.6
IMDB Votes: 620
Plot: A documentary of black art.

Dica

Para saber mais sobre o método orderBy(), consulte a seção Classificar Resultados da Query do guia Modificar Resultados da Query.

Você pode recuperar todos os documento em uma collection omitindo o filtro de query. Para devolver os documentos, chame o método get() em um modelo Eloquent que representa sua coleção. Alternativamente, você pode utilizar o alias do método get() all() para executar a mesma operação.

Use a seguinte sintaxe para executar uma operação de busca que corresponda a todos os documentos:

$movies = Movie::get();

Aviso

A coleção movies no conjunto de dados de amostra do Atlas contém uma grande quantidade de dados. Recuperar e exibir todos os documentos nesta coleção pode fazer com que seu aplicativo da web expire.

Para evitar esse problema, especifique um limite de documento usando o método take(). Para obter mais informações sobre take(), consulte a seção Modificar Resultados da Query do guia Modificar saída da query.

As seções a seguir fornecem exemplos de código totalmente executáveis que demonstram como recuperar documentos usando a integração com o Laravel. Estes exemplos utilizam a sample_mflix.movies collection a partir do conjunto de dados de amostra do Atlas .

Dica

Você pode executar os exemplos completos em seu próprio aplicação Laravel ou a partir do my-app aplicação criado no tutorial de Introdução. Os exemplos usam a Movie.php classe de modelo criada neste tutorial para demonstrar operações na movies collection do MongoDB . Para executar a operação, você pode copiar o código de amostra para um endpoint do controlador em seu aplicação Laravel.

Para visualizar a saída esperada da operação, você pode adicionar uma rota web ao seu aplicação que chama a função do controlador e retorna o resultado para uma interface web.

Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:

Este exemplo executa as seguintes ações:

  • Utiliza o modelo Movie Eloquent para representar a coleção do sample_mflix movies banco de dados do

  • Recupera um documento da coleção movies que corresponde a um filtro de query

  • Imprime o documento recuperado

O exemplo chama os seguintes métodos no modelo Movie :

  • where(): corresponde a documentos em que o valor do campo directors inclui "Rob Reiner"

  • orderBy(): classifica documentos correspondentes por seus valores de _id crescentes

  • first(): recupera somente o primeiro documento correspondente

$movie = Movie::where('directors', 'Rob Reiner')
->orderBy('id')
->first();
echo $movie->toJson();
// Result is truncated
{
"_id": ...,
"title": "This Is Spinal Tap",
"directors": [ "Rob Reiner" ],
...
}

Este exemplo executa as seguintes ações:

  • Acessos a coleção movies chamando o método table() a partir da fase DB

  • Recupera um documento da coleção movies que corresponde a um filtro de query

  • Imprime o campo title do documento recuperado

O exemplo chama os seguintes métodos de construtor de query:

  • where(): corresponde a documentos em que o valor do campo directors inclui "Rob Reiner"

  • orderBy(): classifica documentos correspondentes por seus valores de _id crescentes

  • first(): recupera somente o primeiro documento correspondente

$movie = DB::table('movies')
->where('directors', 'Rob Reiner')
->orderBy('_id')
->first();
echo $movie->title;
This Is Spinal Tap

Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:

Este exemplo executa as seguintes ações:

  • Utiliza o modelo Movie Eloquent para representar a coleção do sample_mflix movies banco de dados do

  • Recupera e imprime documentos da coleção movies que correspondem a um filtro de consulta

O exemplo chama os seguintes métodos no modelo Movie :

  • where(): corresponde a documentos em que o valor do campo runtime é maior que 900

  • orderBy(): classifica documentos correspondentes por seus valores de _id crescentes

  • get(): recupera os resultados da query como um objeto de collection do Laravel

$movies = Movie::where('runtime', '>', 900)
->orderBy('id')
->get();
// Results are truncated
[
{
"_id": ...,
"runtime": 1256,
"title": "Centennial",
...,
},
{
"_id": ...,
"runtime": 1140,
"title": "Baseball",
...,
},
...
]

Este exemplo executa as seguintes ações:

  • Acessos a coleção movies chamando o método table() a partir da fase DB

  • Recupera e imprime documentos da coleção movies que correspondem a um filtro de consulta

O exemplo chama os seguintes métodos de construtor de query:

  • where(): corresponde a documentos em que o valor do campo runtime é maior que 900

  • orderBy(): classifica documentos correspondentes por seus valores de _id crescentes

  • get(): recupera os resultados da query como um objeto de collection do Laravel

$movies = DB::table('movies')
->where('runtime', '>', 900)
->orderBy('_id')
->get();
// Results are truncated
[
{
"_id": ...,
"runtime": 1256,
"title": "Centennial",
...,
},
{
"_id": ...,
"runtime": 1140,
"title": "Baseball",
...,
},
...
]

Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:

Este exemplo executa as seguintes ações:

  • Utiliza o modelo Movie Eloquent para representar a coleção do sample_mflix movies banco de dados do

  • Conta os documentos da collection movies que correspondem a um query filter

  • Imprime a contagem de documentos correspondente

O exemplo chama os seguintes métodos no modelo Movie :

  • where(): corresponde a documentos em que o valor do campo genres inclui "Biography"

  • count(): conta o número de documentos correspondentes e retorna a contagem como um número inteiro

$count = Movie::where('genres', 'Biography')
->count();
echo 'Number of documents: ' . $count;
Number of documents: 1267

Este exemplo executa as seguintes ações:

  • Acessos a coleção movies chamando o método table() a partir da fase DB

  • Conta os documentos da collection movies que correspondem a um query filter

  • Imprime a contagem de documentos correspondente

O exemplo chama os seguintes métodos de construtor de query:

  • where(): corresponde a documentos em que o valor do campo genres inclui "Biography"

  • count(): conta o número de documentos correspondentes e retorna a contagem como um número inteiro

$count = DB::table('movies')
->where('genres', 'Biography')
->count();
echo 'Number of documents: ' . $count;
Number of documents: 1267

Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos para cada sintaxe de query correspondente:

Este exemplo executa as seguintes ações:

  • Utiliza o modelo Movie Eloquent para representar a coleção do sample_mflix movies banco de dados do

  • Recupera valores de campo distintos de documentos da coleção movies que correspondem a um filtro de consulta

  • Imprime os valores distintos

O exemplo chama os seguintes métodos no modelo Movie :

  • where(): corresponde a documentos em que o valor do campo directors inclui "Sofia Coppola"

  • select(): recupera os valores de campo imdb.rating dos documentos correspondentes

  • distinct(): Recupera os valores únicos do campo selecionado e retorna a lista de valores

  • get(): recupera os resultados da query

$ratings = Movie::where('directors', 'Sofia Coppola')
->select('imdb.rating')
->distinct()
->get();
echo $ratings;
[[5.6],[6.4],[7.2],[7.8]]

Este exemplo executa as seguintes ações:

  • Acessos a coleção movies chamando o método table() a partir da fase DB

  • Recupera valores de campo distintos de documentos da coleção movies que correspondem a um filtro de consulta

  • Imprime os valores distintos

O exemplo chama os seguintes métodos de construtor de query:

  • where(): corresponde a documentos em que o valor do campo directors inclui "Sofia Coppola"

  • select(): recupera os valores de campo imdb.rating dos documentos correspondentes

  • distinct(): Recupera os valores únicos do campo selecionado e retorna a lista de valores

  • get(): recupera os resultados da query

$ratings = DB::table('movies')
->where('directors', 'Sofia Coppola')
->select('imdb.rating')
->distinct()
->get();
echo $ratings;
[5.6,6.4,7.2,7.8]

Para saber como inserir dados no MongoDB, consulte o guia Inserir Documentos.

Para saber como modificar a maneira como a integração com o Laravel retorna resultados, consulte o guia Modificar resultados da query.