MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

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

So che è un po' tardi, ma ho pensato di inserire un po' di codice qui. Mi piace avere un modello indicizzato per due motivi:

  1. Posso usarlo come un'interfaccia, cioè sono costretto a inserire queste informazioni perché fa parte di ciò che richiede il modello. Questo assicura di avere un set di dati pulito. Questa è solo una preferenza, non è un requisito.
  2. Le ricerche indicizzate sono più veloci rispetto a quando non sono indicizzate.Non ho fatto abbastanza ricerche su questo per capire se questo è il caso della libreria jensegers . Ma per me ha senso che, se si utilizza uno schema per impostare una raccolta e impostarlo per indicizzare questi campi, sarebbe più veloce durante la ricerca di record all'interno di questa raccolta. Puoi anche configurarlo manualmente dal lato Mongo, ma mi piace che tu possa farlo con questa estensione Eloquent.

Quindi alla persona che legge questo, se ti ho convinto con questo argomento non verificato e vorresti impostare uno schema, ho scoperto che è facile impostare la raccolta ma non è facile eliminarla. Se desideri eseguire una migrazione completa (tieni presente che perderai tutti i tuoi dati durante questa operazione ) quindi puoi utilizzare il codice seguente:

<?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']);
    }
}