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

LumenとMongoDB?

    私たちは実際に1つの巨大なプロジェクトでLumen、Laravel、Mongo、MySQLを使用しているので、このプロジェクトを支援することができます。生のMongoClientではなくeloquentでMongoDBを使用したいとします。私が使用しているライブラリは、jenssegers こちら から見つけることができます。 。

    MongoDB拡張機能をインストールする

    まず、PHPがmongoと対話するための依存関係をインストールする必要があります。 mongo拡張機能のインストールの詳細は、PHPドキュメント に記載されています。 。

    その後、拡張機能をロードするために、プラットフォーム(apache / cli / nginx)のphp.iniファイルを編集する必要があります。 モジュール設定の前に以下を追加しました

    extension=mongo.so
    

    言うまでもなく、構成を変更した後、apache/nginxを再起動する必要があります。

    ルーメンの設定

    ルートルーメンフォルダで、次のコマンドを使用して要件に追加できます。

    composer require jenssegers/mongodb
    

    そこから、前にMongodbServiceProviderもロードする必要があります FacadesまたはEloquentが初期化されます。

    $app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
    
    $app->withFacades();
    
    $app->withEloquent();
    

    構成の整理を簡単にするために、構成フォルダーとdatabase.php構成ファイルも作成しました。 Lumenはこのディレクトリを自動ロードまたは検索しようとしないため、この構成をロードするように指示する必要があります。アプリケーションルートをロードする直前に次の行を配置しました。

    $app->configure('database');
    

    database.phpでは、mongodbドライバーには特定の構造が必要です。両方を使用しているので、ここにmysqlを含めましたが、mongoのみを使用している場合は、デフォルトをmongodbに変更して、mysql構成を削除できます。

    return  [
        'default' => 'mysql',
    
        'connections' => [
            'mysql' => [
                'driver'    => 'mysql',
                'host'      => env('DB_HOST', 'localhost'),
                'database'  => env('DB_DATABASE', ''),
                'username'  => env('DB_USERNAME', ''),
                'password'  => env('DB_PASSWORD', ''),
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
                'strict'    => false,
            ],
    
            'mongodb' => array(
                'driver'   => 'mongodb',
                'host'     => env('MONGODB_HOST', 'localhost'),
                'port'     => env('MONGODB_PORT', 27017),
                'username' => env('MONGODB_USERNAME', ''),
                'password' => env('MONGODB_PASSWORD', ''),
                'database' => env('MONGODB_DATABASE', ''),
                'options' => array(
                    'db' => env('MONGODB_AUTHDATABASE', '') //Sets the auth DB
                )
            ),
    
        ],
    ];
    

    構成が邪魔にならないようにすると、モデルを作成できるようになります。これを記述してmongoのモデルを作成する時点で(githubページを確認してください)、以下をベースとして使用できます。 mongoがデフォルトのドライバーである場合は、$connection変数を無視できます。

    <?php
    
    namespace App;
    
    use Jenssegers\Mongodb\Model as Eloquent;
    
    class Example extends Eloquent 
    {
        protected $connection = 'mongodb';
        protected $collection = 'example';
        protected $primaryKey = '_id';
    }
    

    これで、mongoと正常に対話できるようになります。ドライバーの詳細については、githubページでドキュメントを確認してください。

    この回答が役に立った場合は、回答としてマークを付けることができますか?



    1. Mongoは、2つ以上のフィールドのエントリの重複を検索します

    2. 選択したメールアドレスと名前がすでにMongoDBに存在するかどうかを確認する方法

    3. パイプライン集約を使用したSpringDataMongoDBルックアップ

    4. spring-data mongodbでarrayFiltersでupdateOptionを使用する方法は?