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

Bancos de dados e coleções

Nesta página

  • Visão geral
  • Especifique o banco de dados em uma configuração de conexão
  • Acessar uma coleção
  • Listar coleções
  • Executar um comando de shell
  • Chamar banco de dados ou métodos de esquema
  • Listar campos de coleção
  • Executar um comando de shell
  • Métodos de esquema de chamada
  • Criar e descartar coleções

Neste guia, você pode aprender como usar o Laravel MongoDB para acessar e gerenciar bancos de dados e coleções MongoDB.

O MongoDB organiza dados em uma estrutura hierárquica. Um MongoDB contém um ou mais bancos de dados, e cada banco de dados de dados contém uma ou mais collections. Em cada coleta, o MongoDB armazena dados como documentos que contêm pares de campo e valor. Na integração com o Laravel, você pode acessar documentos por meio de modelos do Eloquent.

Para saber mais sobre o formato de dados do documento, consulteDocumentos do no manual do servidor MongoDB.

Você pode especificar um nome de banco de dados que uma conexão usa no arquivo config/database.php do seu aplicativo. A propriedade connections neste arquivo armazena todas as informações de conexão do banco de dados, como sua string de conexão, nome do banco de dados e, opcionalmente, detalhes de autenticação. Depois de especificar uma conexão com o banco de dados, você pode executar operações em nível de banco de dados e acessar collections que o banco de dados contém.

Se você definir o nome do banco de dados de dados na propriedade database para o nome de um banco de banco de dados inexistente, o Laravel fará uma conexão válida. Quando você insere quaisquer dados em uma coleção no banco de banco de dados, o servidor os cria automaticamente.

O exemplo seguinte mostra como definir uma conexão de banco de banco de dados padrão e criar uma conexão de banco de dados de dados para o banco de banco de dados animals no arquivo config/database.php definindo as propriedades dsn e database :

'default' => 'mongodb',
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => 'mongodb://localhost:27017/',
'database' => 'animals',
], ...
]

Quando você define uma conexão de banco de dados de dados padrão, a integração do Laravel usa essa conexão para operações, mas você pode especificar várias conexões de banco de dados de dados em seu arquivo config/database.php .

O exemplo seguinte mostra como especificar múltiplas conexões de banco de dados de dados (mongodb e mongodb_alt) para acessar os bancos de dados animals e plants :

'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => 'mongodb://localhost:27017/',
'database' => 'animals',
],
'mongodb_alt' => [
'driver' => 'mongodb',
'dsn' => 'mongodb://localhost:27017/',
'database' => 'plants',
]
], ...

Observação

O driver MongoDB PHP reutiliza a mesma conexão quando você cria dois clientes com a mesma string de conexão. Não há sobrecarga no uso de duas conexões para dois bancos de dados distintos, portanto, é desnecessário otimizar suas conexões.

Se o seu aplicativo contiver múltiplas conexões de banco de dados e você quiser armazenar seu modelo em um banco de dados diferente do padrão, substitua a propriedade $connection na sua classe Model .

O exemplo seguinte mostra como substituir a propriedade $connection na classe de modelo Flower para usar a conexão mongodb_alt . Isso direciona a integração do Laravel para armazenar o modelo na flowers coleção do plants banco de banco de dados , em vez de no banco de banco de dados padrão:

class Flower extends Model
{
protected $connection = 'mongodb_alt';
}

Quando você cria uma classe de modelo que se estende MongoDB\Laravel\Eloquent\Model, a integração do Laravel armazena os dados do modelo em uma coleção com um nome formatado como a forma plural do caso da cobra do nome da classe do modelo.

Por exemplo, se você criar uma classe de modelo chamada Flower, o Laravel aplicará o modelo à collection flowers no banco de dados.

Dica

Para saber como especificar um nome de coleção diferente em sua classe de modelo, consulte a seção Alterar o nome da coleção de modelo do guia Classe de modelo Eloquent.

Em geral, recomendamos que você use o ORM do Eloquent para acessar uma collection para legibilidade e manutenção do código. O exemplo a seguir especifica uma operação de localização usando a classe Flower , para que o Laravel recupere os resultados da coleção flowers :

Flower::where('name', 'Water Lily')->get()

Observação

A partir do Laravel Integration v4.8, o método DB::collection() é preterido. Conforme mostrado no exemplo a seguir, você pode usar o método DB::table() para acessar uma coleção MongoDB .

Se não for possível realizar sua operação usando um modelo Eloquent, você pode acessar o construtor de query chamando o método table() na interface DB . O exemplo a seguir mostra a mesma query do exemplo anterior, mas a query é construída usando o método DB::table() :

DB::connection('mongodb')
->table('flowers')
->where('name', 'Water Lily')
->get()

Você pode realizar uma das seguintes ações para visualizar informações sobre as collections em um banco de dados de dados:

Você pode listar as coleções em um banco de dados de dados executando o seguinte comando em sua shell a partir do diretório raiz do seu projeto:

php artisan db:show

Esse comando gera informações sobre o banco de banco de dados configurado e lista suas collections no cabeçalho Table. Para mais informações sobre o db:show comando, consulte Laravel: Novos comandos de banco de dados no blog oficial do Laravel.

Você pode listar as coleções em um banco de dados de dados ligando para os seguintes métodos em seu aplicação:

  • DB::listCollections(): lista informações sobre cada collection usando o construtor de query

  • Schema::getTablesListing(): lista o nome de cada coleção usando o construtor de esquema

  • Schema::getTables(): lista o nome e o tamanho de cada coleção usando o construtor de esquema

Observação

O MongoDB é um banco de dados de dados sem esquema , portanto, os métodos construtores de esquema anteriores consultam os dados do banco de dados de dados em vez do esquema.

O exemplo a seguir acessa uma conexão de banco de dados de dados e, em seguida, chama o método listCollections() de construtor de query para recuperar informações sobre as collections no banco de banco de dados:

$collections = DB::connection('mongodb')->getMongoDB()->listCollections();

Você pode realizar uma das seguintes ações para ver informações sobre cada campo em uma collection:

Você pode ver uma lista de campos em uma coleção executando o seguinte comando em sua shell a partir do diretório raiz do seu projeto:

php artisan db:table <collection name>

Este comando gera cada campo de coleção e seu tipo de dados correspondente sob o cabeçalho Column . Para obter mais informações sobre o db:table comando , consulte Laravel: Novos comandos de banco de dados no blog oficial do Laravel.

Você pode listar os campos em uma coleção chamando o método de construtor de esquema do Schema::getColumns() em seu aplicação.

Você também pode usar os métodos a seguir para retornar mais informações sobre os campos de coleção:

  • Schema::hasColumn(string $<collection>, string $<field name>): verifica se o campo especificado existe em pelo menos um documento

  • Schema::hasColumns(string $<collection>, string[] $<field names>): verifica se cada campo especificado existe em pelo menos um documento

Observação

O MongoDB é um banco de dados de dados sem esquema , portanto, os métodos anteriores executam query dos dados da collection em vez do esquema do banco de dados de dados. Se a coleção especificada não existir ou estiver vazia, esses métodos retornarão um valor de false.

O exemplo seguinte passa um nome de coleção para o método Schema::getColumns() para recuperar cada campo na coleção flowers :

$fields = Schema::getColumns('flowers');

Para saber como criar e eliminar collections, consulte a seção Executar migrações do Laravel no guia Construtor de esquemas.

Voltar

Habilitar e configurar TLS