MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Laravel - Mongodb [ jensegers/laravel-mongodb ] - Schema Builder


Eu sei que isso é um pouco tarde, mas pensei em colocar um pouco de código aqui. Eu gosto de ter um modelo indexado por dois motivos:
  1. Posso usá-lo como uma interface, ou seja, sou obrigado a inserir essas informações porque faz parte do que o modelo exige. Isso garante que eu tenha um conjunto de dados limpo. Isso é apenas preferência, não é um requisito.
  2. As pesquisas indexadas são mais rápidas do que quando não são indexadas.Não fiz pesquisas suficientes sobre isso para descobrir se esse é o caso da biblioteca jensegers . Mas faz sentido para mim que, se você usar um esquema para configurar uma coleção e configurá-la para indexar esses campos, seria mais rápido pesquisar registros nessa coleção. Você também pode configurar isso manualmente do lado do Mongo, mas eu gosto que você possa fazer isso com esta extensão Eloquent.

Então, para a pessoa que está lendo isso, se eu o convenci com este argumento não verificado e você gostaria de configurar um esquema, descobri que é fácil configurar a coleção, mas não é fácil eliminá-la. Se você quiser fazer uma migração completa (lembre-se de que perderá todos os seus dados ao fazer isso ) então você pode usar o código abaixo:
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateYourCollectionTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection('mongodb')->create('collection_name', function ($collection) {
            $collection->index('field_1');
            $collection->index('field_2');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::connection('mongodb')->drop(['collection_name']);
    }
}