Знам, че е малко късно, но реших да добавя малко код тук. Харесва ми да имам индексиран модел по две причини:
- Мога да го използвам като интерфейс, т.е. принуден съм да въведа тази информация, защото е част от това, което моделът изисква. Това гарантира, че имам чист набор от данни. Това е просто предпочитание, не е изискване.
- Индексираните търсения са по-бързи, отколкото когато не са индексирани.Не съм направил достатъчно проучване за това, за да разбера дали това е случаят с библиотеката на jenssegers . Но за мен има смисъл, че ако използвате схема за създаване на колекция и я настроите да индексира тези полета, тогава ще бъде по-бързо, когато търсите записи в тази колекция. Можете също да настроите това ръчно от страна на Mongo, но ми харесва, че можете да го направите с това разширение Eloquent.
Така че към човека, който чете това, ако съм ви убедил с този непроверен аргумент и бихте искали да настроите схема, открих, че е лесно да настроите колекцията, но не е лесно да я пуснете. Ако искате да извършите пълна миграция (имайте предвид, че ще загубите всичките си данни, когато направите това ), тогава можете да използвате кода по-долу:
<?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']);
}
}