devture/mongodb-migrations
Laravel-friendly MongoDB migration runner that manages schema/data changes with versioned migration classes and CLI commands. Helps apply, track, and rollback database updates across environments in a predictable way.
createCollection, addField, dropIndex) while preserving MongoDB’s dynamic schema capabilities.Schema facade and migration system.php artisan migrate runs both SQL and MongoDB migrations).mongodb/mongodb PHP driver (v1.0+). Compatibility with Laravel’s PHP version (8.0+) must be verified.docksearch/mongodb).addField on existing documents without defaults).insert operations).updateMany) may impact production performance. Benchmarking is recommended.php artisan migrate:status). CLI-only workflow may frustrate non-technical stakeholders.Schema::createCollection vs. Schema::table)?migration:status table is limited.$jsonSchema)?jenssegers/mongodb) if used.mongodb/mongodb driver (v1.0+). Install via Composer:
composer require mongodb/mongodb
config/database.php:
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_MONGODB_HOST', 'localhost'),
'port' => env('DB_MONGODB_PORT', 27017),
'database' => env('DB_MONGODB_DATABASE', 'database'),
'username' => env('DB_MONGODB_USERNAME', null),
'password' => env('DB_MONGODB_PASSWORD', null),
],
],
composer require devture/mongodb-migrations
Publish the config file (if available) and service provider:
php artisan vendor:publish --provider="Devture\MongodbMigrations\MongodbMigrationsServiceProvider"
config/database.php.php artisan make:migration create_users_collection --connection=mongodb
use Devture\MongodbMigrations\MongodbMigration;
use Devture\MongodbMigrations\Schema\Blueprint;
class CreateUsersCollection extends MongodbMigration {
public function up() {
Schema::connection('mongodb')->create('users', function (Blueprint $collection) {
$collection->index('email', ['unique' => true]);
$collection->index('created_at');
$collection->field('name', ['type' => 'string']);
$collection->field('email', ['type' => 'string']);
$collection->field('created_at', ['type' => 'date']);
});
}
public function down() {
Schema::connection('mongodb')->drop('users');
}
}
Schema::table for adding fields to existing collections:
Schema::connection('mongodb')->table('users', function (Blueprint $collection) {
$collection->field('updated_at', ['type' => 'date']);
});
DB::connection('mongodb')->collection()->insertMany() outside migrations or batch migrations.public function up() {
$users = User::all()->toArray(); // Assume SQL User model
DB::connection('mongodb')->collection('users')->insertMany($users);
}
php artisan migrate:fresh --env=testing for test environments.mongo-db-mocker or Dockerized test containers.php artisan queue:work).migrate:status table for tracking (though MongoDB-specific status may require custom logic).Schema::foreign (irrelevant for MongoDB).insert/update operations are not atomic by default.orders after users), use Laravel’s migration batching or explicit ordering in up()/down().migrate:status to track MongoDB migration progress alongside SQL migrations.down() methods to be idempotent (e.g., check if collection exists before dropping).YYYY_MM_DD_HHMMSS_ prefix for filenames).add_index_to_users_email).How can I help you explore Laravel packages today?