sql >> データベース >  >> NoSQL >> MongoDB

Laravel-Mongodb [jenssegers/laravel-mongodb]-スキーマビルダー

    これは少し遅いことは知っていますが、ここに少しコードを入れたいと思いました。私は2つの理由でインデックス付きモデルが好きです:

    1. インターフェイスのように使用できます。つまり、モデルに必要な情報の一部であるため、この情報を入力する必要があります。これにより、クリーンなデータセットが確保されます。これは単なる好みであり、必須ではありません。
    2. インデックス付き検索は、インデックスなしの場合よりも高速です。これがジェンセガーライブラリの場合であるかどうかを判断するのに十分な調査を行っていません 。ただし、スキーマを使用してコレクションを設定し、これらのフィールドにインデックスを付けるように設定すると、このコレクション内のレコードを検索するときに高速になることは私には理にかなっています。これは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']);
        }
    }
    



    1. Robo 3Tエラー:ネットワークに到達できません

    2. mongoDBスキーマのフラット化

    3. ObjectIdをJSONにシリアル化する方法は?

    4. Pythonでオブジェクトの配列を結合してフォーマットします