MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Laravel – Mongodb [ jenssegers/laravel-mongodb ] – Schema Builder

Ich weiß, das ist ein bisschen spät, aber ich dachte, ich würde hier ein bisschen Code einwerfen. Ich mag ein indiziertes Modell aus zwei Gründen:

  1. Ich kann es wie eine Schnittstelle verwenden, dh ich bin gezwungen, diese Informationen einzugeben, weil es Teil dessen ist, was das Modell erfordert. Dies stellt sicher, dass ich einen sauberen Datensatz habe. Dies ist nur eine Präferenz, es ist keine Voraussetzung.
  2. Indizierte Suchen sind schneller als wenn sie nicht indexiert sind.Ich habe dies nicht ausreichend recherchiert, um herauszufinden, ob dies bei der jenssegers-Bibliothek der Fall ist . Aber es macht für mich Sinn, wenn Sie ein Schema verwenden, um eine Sammlung einzurichten und diese Felder zu indizieren, dann wäre es schneller, wenn Sie nach Datensätzen in dieser Sammlung suchen. Sie können dies auch manuell von der Mongo-Seite aus einrichten, aber ich finde es gut, dass Sie dies mit dieser Eloquent-Erweiterung tun können.

Also an die Person, die dies liest, wenn ich Sie mit diesem unbestätigten Argument überzeugt habe und Sie möchten ein Schema einrichten, habe ich festgestellt, dass es einfach ist, die Sammlung einzurichten, aber nicht einfach, sie zu löschen. Wenn Sie eine vollständige Migration durchführen möchten (beachten Sie, dass dabei alle Ihre Daten verloren gehen ), dann können Sie den folgenden Code verwenden:

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