MongoDB Laravel: Tradicionalmente, aplicações Laravel utilizam bancos de dados relacionais como MySQL ou PostgreSQL. No entanto, em certos cenários, um banco de dados NoSQL como o MongoDB pode ser uma escolha mais adequada, especialmente quando se lida com grandes volumes de dados não estruturados ou quando a escalabilidade horizontal é uma prioridade.
Este artigo explora a fundo a integração do mongodb laravel
, abordando desde a instalação e configuração até a demonstração de suas principais funcionalidades.
Instalação
A integração do MongoDB com Laravel é feita através do pacote mongodb/laravel-mongodb
. Siga os passos abaixo para a instalação:
- Instale o MongoDB Server:
Baixe e instale o MongoDB Community Edition a partir do site oficial do MongoDB (https://www.mongodb.com/). Siga as instruções de instalação para o seu sistema operacional.
- Instale a Extensão PHP para MongoDB:
O Laravel precisa da extensão PHPmongodb
para se comunicar com o servidor MongoDB. A maneira recomendada é usar o PECL:
Bash
pecl install mongodb
Ou, dependendo da sua distribuição Linux e versão do PHP:
Bash
# Exemplo para Ubuntu/Debian com PHP 8.3
sudo apt install php8.3-mongodb
- Adicione o Pacote
mongodb/laravel-mongodb
:
Use o Composer para adicionar o pacote ao seu projeto Laravel:
Bash
composer require mongodb/laravel-mongodb
- Registre o Service Provider (Laravel 9 e anteriores):
Em versões anteriores ao Laravel 10, você precisa registrar o service provider no arquivoconfig/app.php
:
PHP
'providers' => [ // ... MongoDB\Laravel\MongoDBServiceProvider::class, ]
A partir do Laravel 10, o auto-discovery de pacotes cuidará disso automaticamente.
Configuração
A configuração do MongoDB no Laravel é feita no arquivo config/database.php
. Adicione uma nova conexão dentro do array connections
:
PHP
'connections' => [
// ...
'mongodb' => [
'driver' => 'mongodb',
'url' => env('MONGODB_URL'),
'host' => env('MONGODB_HOST', '127.0.0.1'),
'port' => env('MONGODB_PORT', 27017),
'database' => env('MONGODB_DATABASE', 'nome_do_banco'),
'username' => env('MONGODB_USERNAME'),
'password' => env('MONGODB_PASSWORD'),
'options' => [
'appname' => 'nome_da_aplicacao', // Opcional
]
],
],
Defina as variáveis de ambiente no seu arquivo .env
:
MONGODB_URL=mongodb://seu_usuario:sua_senha@seu_host:seu_porta/?replicaSet=nome_do_replica_set
MONGODB_HOST=127.0.0.1
MONGODB_PORT=27017
MONGODB_DATABASE=nome_do_banco
MONGODB_USERNAME=seu_usuario
MONGODB_PASSWORD=sua_senha
Você pode usar tanto a string de conexão completa (MONGODB_URL
) quanto as configurações separadas (MONGODB_HOST
, MONGODB_PORT
, etc.). A string de conexão tem precedência.
Configurando o Banco de Dados Padrão:
Para definir o MongoDB como a conexão padrão, altere a variável DB_CONNECTION
no seu arquivo .env
:
DB_CONNECTION=mongodb
Funcionalidades
Após a instalação e configuração, você pode começar a usar o MongoDB no seu projeto Laravel. Aqui estão alguns exemplos de como interagir com o banco de dados:
- Acessando a Conexão:
Você pode acessar a conexão MongoDB usando a Facade DB
:
PHP
use Illuminate\Support\Facades\DB;
$collection = DB::connection('mongodb')->collection('nome_da_colecao');
Se você definiu o MongoDB como a conexão padrão, pode omitir connection('mongodb')
:
PHP
$collection = DB::collection('nome_da_colecao');
- Inserindo Documentos:
PHP
$collection->insert([
'nome' => 'Produto A',
'preco' => 10.99,
'descricao' => 'Descrição do Produto A',
]);
// Inserindo múltiplos documentos:
$collection->insertMany([
['nome' => 'Produto B', 'preco' => 20],
['nome' => 'Produto C', 'preco' => 30],
]);
- Buscando Documentos:
PHP
// Buscando todos os documentos
$documentos = $collection->get();
// Buscando um documento pelo _id
$documento = $collection->find('id_do_documento');
// Buscando documentos com critérios
$documentos = $collection->where('preco', '>', 15)->get();
//Usando operadores MongoDB:
$documentos = $collection->where('nome', 'like', '%Produto%')->get(); // Equivalente ao $regex no MongoDB
$documentos = $collection->where('preco', ['$gt' => 15])->get(); // Usando operadores do MongoDB diretamente
- Atualizando Documentos:
PHP
// Atualizando um documento
$collection->where('_id', 'id_do_documento')->update(['preco' => 12.99]);
// Atualizando múltiplos documentos
$collection->where('nome', 'like', '%Produto%')->update(['disponivel' => true]);
- Deletando Documentos:
PHP
// Deletando um documento
$collection->where('_id', 'id_do_documento')->delete();
// Deletando múltiplos documentos
$collection->where('preco', '<', 10)->delete();
- Usando Eloquent com MongoDB (jenssegers/mongodb):
Para uma experiência mais integrada com o Eloquent ORM, você pode usar o pacote jenssegers/mongodb
:
- Instale o pacote:
Bash
composer require jenssegers/mongodb
Crie um model que estende Jenssegers\Mongodb\Eloquent\Model
:
PHP
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Produto extends Eloquent {
protected $connection = 'mongodb'
// Nome da coleção protected $fillable = ['nome', 'preco', 'descricao'];
protected $collection = 'produtos';
}
Agora você pode usar o Eloquent normalmente:
PHP
$produto = Produto::create(['nome' => 'Novo Produto', 'preco' => 25]);
$produtos = Produto::all();
$produto = Produto::find('id_do_documento');
$produtos = Produto::where('preco', '>', 20)->get();
Exemplo Completo: Listando Produtos com MongoDB e Eloquent
PHP
// Route
Route::get('/produtos', function () {
$produtos = App\Models\Produto::all();
return view('produtos.index', compact('produtos'));
});
// View (resources/views/produtos/index.blade.php)
<ul>
@foreach ($produtos as $produto)
<li>{{ $produto->nome }} - R$ {{ $produto->preco }}</li>
@endforeach
</ul>
Conclusão
MongoDB Laravel: A integração do mongodb laravel
oferece uma alternativa NoSQL robusta para aplicações que necessitam de flexibilidade no esquema e alta escalabilidade. Com a facilidade de uso proporcionada pelo pacote mongodb/laravel-mongodb
e a opção de usar o Eloquent com o pacote jenssegers/mongodb
, você pode aproveitar os benefícios do MongoDB em seus projetos Laravel de forma eficiente.
Ao escolher entre um banco de dados relacional e o MongoDB, considere as necessidades específicas do seu projeto, como a estrutura dos dados, a necessidade de escalabilidade e os padrões de acesso aos dados.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados: