Wiem, że to trochę za późno, ale pomyślałem, że wrzucę tu trochę kodu. Lubię mieć indeksowany model z dwóch powodów:
- Mogę używać go jak interfejsu, tj. jestem zmuszony wprowadzić te informacje, ponieważ jest to część tego, czego wymaga model. Gwarantuje to, że mam czysty zestaw danych. To tylko preferencja, a nie wymóg.
- Wyszukiwania zindeksowane są szybsze niż wtedy, gdy nie są indeksowane.Nie przeprowadziłem wystarczająco dużo badań, aby dowiedzieć się, czy tak jest w przypadku biblioteki jenssegers . Ale ma dla mnie sens, że jeśli użyjesz schematu do skonfigurowania kolekcji i ustawisz go na indeksowanie tych pól, wyszukiwanie rekordów w tej kolekcji będzie szybsze. Możesz również ustawić to ręcznie ze strony Mongo, ale podoba mi się, że możesz to zrobić za pomocą tego rozszerzenia Eloquent.
A więc do osoby, która to czyta, jeśli przekonałem Cię tym niezweryfikowanym argumentem i chcesz skonfigurować schemat, odkryłem, że łatwo jest skonfigurować kolekcję, ale nie jest łatwo ją usunąć. Jeśli chcesz przeprowadzić pełną migrację (pamiętaj, że utracisz wszystkie dane, gdy to zrobisz ) możesz użyć poniższego kodu:
<?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']);
}
}