Jeg ved godt, det er lidt sent, men jeg tænkte, at jeg ville smide lidt kode ind her. Jeg kan godt lide at have en indekseret model af to grunde:
- Jeg kan bruge det som en grænseflade, dvs. jeg er tvunget til at indtaste disse oplysninger, fordi det er en del af det, som modellen kræver. Dette sikrer, at jeg har et rent datasæt. Dette er blot præference, det er ikke et krav.
- Indekserede søgninger er hurtigere, end når de ikke indekseres.Jeg har ikke forsket nok i dette til at finde ud af, om dette er tilfældet med jenssegers bibliotek . Men det giver mening for mig, at hvis du bruger et skema til at oprette en samling og indstiller det til at indeksere disse felter, så ville det være hurtigere, når du søger efter poster i denne samling. Du kan også konfigurere dette manuelt fra Mongo-siden, men jeg kan godt lide, at du kan gøre det med denne Eloquent-udvidelse.
Så til den person, der læser dette, hvis jeg har overbevist dig med dette ubekræftede argument og du gerne vil oprette et skema, har jeg fundet ud af, at det er nemt at opsætte samlingen, men ikke let at droppe det. Hvis du vil udføre en fuld migrering (vær opmærksom på, at du mister alle dine data, når du gør dette ), så kan du bruge koden nedenfor:
<?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']);
}
}