mongoDB

adminMongo で private subnet に設置した mongoDB からデータを取得する

環境: mongoDB を private subnet に設置 adminMongo を public subnet に設置 github.com @public subnet App instance cd projectDirectory git clone https://github.com/mrvautin/adminMongo.git && cd adminMongo cd adminMongo adminMongo/config/app…

mongoDB: Upgrade した直後、mongod で DB がすぐにシャットダウンしてしまう

環境: mongoDB@4.2 から @6.0.6 にアップグレード error: This version of MongoDB is too recent to start up on the existing data files. Try MongoDB 4.2 or earlier solution: root ディレクトリの data フォルダを削除して再度dataフォルダを設置 ref…

jenssegers / laravel-mongodb ランダムなレコードを取得する

環境: Laravel@9.52.4 jenssegers/laravel-mongodb@3.9.5 $Posts = Post::raw(function($collection) { return $collection->aggregate([ ['$sample' => ['size' => 5]], ['$project' => ['title' => 1, 'body' => 1]] ]);}); ref: www.codegrepper.com gith…

mongoDB の効率的なデータベース設計 ChatGPT曰く

>>> 頻繁に検索するならフラットに、そうでなくてかつデータの関連性を維持したいならネストもあり。 >>> 検索対象が小規模ならメンテナンスのことを考えてアプリケーション側の処理のしやすさを優先させてもいいかも。

Laravel + MongoDB: error: Indirect modification of overloaded property App\....

環境: laravel@8.83.23 jensseger/laravel-mongodb@3.8.0 Model Structure Profile: { roles: [’admin’] } $profile = App\Profile::find(1); $profile->roles = array_push($profile->roles, 'superAdmin') >>> error: Indirect modification of overloade…

Laravel + mongoDB find deepley nested collection with array

環境: laravel@8.79.0 Jenssegers/mongodb@3.8.4 サーチ対象の model 構造は以下とする Order { _id: ********, shippingStatus: [ "status" => "発送完了", "shippingMethod" => "クロネコヤマト", "inquiryNumber" => "11111111" ] } Order model から shi…

Laravel: 親モデルを削除と同時に子モデルを削除する cascading soft-delete / MySQL case and MongoDB case

環境: Laravel@8.79.0 Jenssegers/mongodb@3.8.4 前提: 親モデル >>> User.php MySQL子モデル >>> Post.php MongoDB子モデル >>> ProfileDetail.php case MySQL soft-delete に対応させる migration file に以下を加筆 Schema::create('users', function B…

Laravel MongoDB: mongodbを使用時にmigration file で table を定義する

環境 Laravel@8.79.0 Jenssegers/mongodb@3.8.4 migration をしなくても ORM から query することで DB に table を作成することができるが、 migration file を作って DB table を定義したい場合、 php artisan make:migration create_MONGO_TABLE_MODEL_ta…

Laravel MongoDB: Delete a table and items manually

環境 Laravel@8.79.0 Jenssegers/mongodb@3.8.4 php artisan tinker >>> @tinker session // Delete a table Schema::connection('mongodb')->drop('TABLE_NAME') // Delete items DB::connection('mongodb')->table('TABLE_NAME')->truncate() ref: stackov…

Oracle Cloud Infrastructure: private subnet に設置した mongoDB server に public subnet からアクセスする

Updated: 2023/3/7 環境: App server と mongoDB 設置 server は同一VCN内にあり、App server は public subnet, mongoDB は private subnet 内に設置。 OSはともにubuntu@20.04 mongoDB@5.0.3 Public Subnet の Security Group Egress 宛先:Private Subnet…

Upgrade Laravel from 7.x to 8.x / Upgrade PHP7.2 to PHP8.0 / Upgrade jenssegers/laravel-mongodb on AWS Cloud9

PHPをUpgrade sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install libapache2-mod-php8.0 sudo a2dismod php7.2 sudo a2enmod php8.0 sudo apt-get install php8.0-dom php8.0-mbstring php8.0-zip php8.0-mysql php8.0-comm…

Laravel + MongoDB + jensseger/laravel-mongodb: データベースからランダムにドキュメントを取得する方法

laravel@7.28.4 jensseger/laravel-mongodb@3.7.3 $result = myModel::raw(function($collection){ return $collection->aggregate([ ['$sample' => ['size' => 3]] ]); }) ref: github.com docs.mongodb.com stackoverflow.com

Laravel + MongoDB + jensseger/laravel-mongodb: update deeply nested mongodb documents

updated: 2022/3/29 環境: laravel@7.28.4 mongodb-php-driver@1.7 jensseger/laravel-mongodb@3.7.0 編集したいprofielDetail model のstructureは下記とする。 Userモデルは一つのProfileDetailモデル(hasOne)を持つ。 hasOneModel では protected $filla…

jensseger/laravel-mongodb 日付の取り扱い

環境: jensseger/laravel-mongodb@3.7.0 Moloquentを使用したmodelは、DB上にはデフォルトの設定ではMongoDB\BSON\UTCDatetimeで保管されている。 しかしキーにアクセスすると… ↑ timezoneがAsia/Tokyoで返るのはlaravelのconfig/app.phpでtimezone, locale…

Laravel 6.x から 7.x へアップグレード with jenssegers / laravel-mongodb

環境: php@7.2 laravel@6.18.35 mongodb@4.0.1 ext-mongodb@1.6 jenssegers / laravel-mongodb が laravel7.x に対応するようになったのでそれへの対応について。 composer.json のlaravel の dependency だけ書き換えて composer update するとエラー が出…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7 ⑪ difference between embedsMany relationship and hasMany relationship

embedsMany: 子供側の model は mongoDB 内に collection が作成されず親の collection 内にデータがネストされる。 _id は自動で付与される。 親: order 子: orderImage $order = App\Order::where("user_id", 42)->first() $order->orderImages()->create(…

adminMongoを導入

Updated 2023_06_05 既存のAWS cloud9 上の Laravel + MongoDB App に adminMongo を導入 https://github.com/mrvautin/adminMongo プロジェクトのルートディレクトリで npm install admin-mongo adminMongo 用のサーバーを準備 /node_modules/admin-mongo …

Laravel Database 操作 PHP Notice: Indirect modification of overloaed property ...

Laravel@5.8.33 mongoDB@4.0.10 あるEloquent ORMのネストされたデータdetails['description']をアップデートしたい。 $target = App\ModelName::first() $target->details['description'] >>> "test" と返るので直接 $target->details['description'] = "up…

MongoDB with PHP: nest されたキーバリューの削除

updated: 2018/10/23 環境: Laravel 5.7.6 PHP7 特定のコレクション内のcomments array の特定の _id をもつバリューを削除したい。 $db = (new MongoDB\Client)->YOUR_DB; $collection = $db->YOUR_COLLECTION; $pid は削除したい pixieImage collection …

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7 ⑩ 特定のcollectionのネストされたキーの値を取得する

mysql の select XX に当たるのが mongoDB では projection 'user_id' => 1 は true という意味 参考: github.com jenssegers/laravel-mongodb を使わないで mongoDB php driver を使うなら 参考: MongoDB\Collection::findOne() — PHP Library Manual 1.4…

MongoDB PHP driver

新しい ObjectId を作る @mongo shell ObjectId(); @php new MongoDB/BSON/ObjectId; PHP側でnamespaceを使っていたら… use MongoDB\BSON\ObjectID; new ObjectID; 参考: BSON — PHP Library Manual 1.4 PHP: MongoDB\BSON\ObjectId - Manual //

Laravel 5.x Factory と Faker で relational なモックアップを作る。

updated: 2021/6/1 jenssegers/mongodb の mysql relationships で使用可能なことが確認済み php artisan make:factory FACTORY_NAME factory1 factory2 seeds/DatabaseSeeder.php おまけ ランダムな文字列を生成 return [ 'randomText' => $faker->regexify…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7 ⑨ Mysql relationships で mongoDB と mysql 上のデータを合わせて返す。

updated: 2018/10/1 Mysql relationships については下記参照 monteecristoo.hatenablog.com mongoDBとMysqlをjoin して返したい場合、mongoDBはjoinに対応していないので、 PixieImage は mongoDB上のデータベース user はmysql のデータベース さらにこれ…

jenssegers/laravel-mongodb Installation on php7.2 cloud9

Updated: 2018/9/27 php7.2 を cloud9 にインストール monteecristoo.hatenablog.com MongoDB のインストール monteecristoo.hatenablog.com PHP 用の MongoDB ドライバーをインストール PHP: Installing the MongoDB PHP Driver with PECL - Manual sudo pe…

php の mongodb ドライバーをインストールしようとしたらエラーが発生した cloud9

環境: php7.2 cloud9(ubuntu14.0.4) cloud9 で php5 から php7 にアップデート済み MongoDB ver 4.0.2 sudo pecl mongodb => Parse error: syntax error, unexpected 'new' (T_NEW) in /usr/share/php/PEAR/Frontend.php on line 91 solution: sudo apt-g…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7⑧ sample case

// App\User ===> App\MongoMessage Mysql Relationships App\MessageGroup ===> App\MongoMessage hasMany Relationships App\User public function mongoMessages() { return $this->hasMany(MongoMessage::class); } App\MessageGroup public function mo…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7⑦ convert mongoDB to Mysql

// setting up Mysql Relationships create the route and controller fetch the data from mongoDB extract the value from the response(3) fetch the data from Mysql using the value(4) return the response 1. @app\user use Jenssegers\Mongodb\Eloqu…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7⑥ Mysql relationships test

// App\User >>>> Mysql based Database use Jenssegers\Mongodb\Eloquent\HybridRelations; use App\MongoMessage; class User extends Authenticatable { use HybridRelations; use MongoMessage; public function mongoMessages() { return $this->hasMan…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7⑤ EmbedsMany relationships test

// tinker $mongoUser = new MongoUser(['id' => 1, 'name' => 'Max']); $mongoMessage = new MongoMessage(['id' => 1, 'group' => '1', 'body' => 'Something', 'sender' => 'max', 'receiver' => 'Monica']); $mongoMessage = $mongoUser->mongoMessages(…

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7④

// App/MongoUser namespace App; use Moloquent; use MongoMessage; class MongoUser extends Moloquent{ protected $connection = 'mongodb'; protected $collection = 'mongoUsers'; public function mongoMessages() { return $this->embedsMany('MongoM…