MongoDB Laravel

Laravel
Tempo de leitura: 4 minutos

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 PHP mongodb 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 arquivo config/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:

      HTML
      HTML
      CSS
      CSS
      Javascript
      JavaScript

      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:

      Hospedagem Hostinger
      Ofertas Amazon
      Amazon Prime

      Author: Thiago Rossi

      Deixe um comentário

      O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *