sql >> Base de Datos >  >> NoSQL >> MongoDB

Laravel - Mongodb [jenssegers/laravel-mongodb] - Generador de esquemas

Sé que esto es un poco tarde, pero pensé en incluir un poco de código aquí. Me gusta tener un modelo indexado por dos razones:

  1. Puedo usarlo como una interfaz, es decir, me veo obligado a ingresar esta información porque es parte de lo que requiere el modelo. Esto asegura que tengo un conjunto de datos limpio. Esto es solo preferencia, no es un requisito.
  2. Las búsquedas indexadas son más rápidas que cuando no están indexadas.No he investigado lo suficiente sobre esto para averiguar si este es el caso con la biblioteca jenssegers . Pero tiene sentido para mí que, si usa un esquema para configurar una colección y configurarlo para indexar estos campos, sería más rápido al buscar registros dentro de esta colección. También puede configurar esto manualmente desde el lado de Mongo, pero me gusta que pueda hacerlo con esta extensión de Eloquent.

Entonces, para la persona que lea esto, si lo he convencido con este argumento no verificado y le gustaría configurar un esquema, he descubierto que es fácil configurar la colección pero no es fácil descartarla. Si desea realizar una migración completa (tenga en cuenta que perderá todos sus datos al hacer esto ) entonces puedes usar el siguiente código:

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