Skip to content
Home / Migrations / Mongoose (MongoDB)Drizzle ORM (PostgreSQL)

Mongoose (MongoDB) Drizzle ORM (PostgreSQL)

hard

Move from MongoDB/Mongoose document model to relational PostgreSQL with Drizzle. Involves rethinking data structure, not just swapping libraries.

Estimated: 12-24h · 7 steps
Progress0%
Step 1: Analyze current schema

List all Mongoose schemas. Identify embedded documents (→ related tables), arrays (→ junction tables), mixed types (→ JSONB columns).

Step 2: Design SQL schema

Create Drizzle schema file. Embedded docs → separate tables with FK. Arrays of primitives → separate table or JSONB. Mixed → JSONB.

npm install drizzle-orm postgres && npm install -D drizzle-kit
Step 3: Export MongoDB data

Use mongoexport to export collections as JSON.

mongoexport --db mydb --collection users --out users.json
Step 4: Transform and import data

Write a Node.js script to read exported JSON and insert into PostgreSQL using Drizzle. Handle nested objects and arrays.

Step 5: Replace Mongoose queries

Model.find(filter) → db.select().from(table).where(). Model.create() → db.insert(). Model.updateOne() → db.update().

Step 6: Update indexes

Recreate Mongoose indexes as PostgreSQL indexes in Drizzle schema. Unique constraints, compound indexes.

Step 7: Test thoroughly
All CRUD operations work, relationships correct, performance acceptable