MongoDB
Create a Prisma ORM app with MongoDB, apply the first migration, and run your first query against seeded data.
bun create prisma@latest --provider mongodb --no-deploypnpm create prisma@latest --provider mongodb --no-deployyarn create prisma@latest --provider mongodb --no-deploynpm create prisma@latest -- --provider mongodb --no-deployRun this from a Node.js 22.18 or newer (on the 24 line, 24.11 or newer) environment; Node.js 24 is recommended. The command preselects MongoDB and prompts you for the project name, the template, the contract authoring style (PSL or TypeScript), your package manager, and whether to install agent skills.
Setup gives you the app template, a starter contract, prisma-8.md, project-level Prisma ORM skills for your coding agent, and package scripts for the database steps below. Answer no at the skills prompt, or pass --skills none, to skip the agent skill files; to remove them later, see skills sync and the skills config section. Sample users are seeded automatically the first time the app queries the database, so there is no separate seed step.
A standalone mongod is enough to work through this quickstart. A replica set is only needed for transactions and change streams, and MongoDB Atlas already gives you one. The connection string the scaffold writes assumes a single-node replica set named rs0 on port 27017, so either run one locally or edit the string to point at your standalone server. If you use a standalone mongod, remove replicaSet=rs0 from the connection strings below (keep directConnection=true); a URL that names a replica set only connects to a server that belongs to one.
Run this from a Node.js 22.18 or newer (on the 24 line, 24.11 or newer) environment; Node.js 24 is recommended. The command preselects MongoDB and prompts you for the project name, the template, the contract authoring style (PSL or TypeScript), your package manager, and whether to install agent skills.
Setup gives you the app template, a starter contract, prisma-8.md, project-level Prisma ORM skills for your coding agent, and package scripts for the database steps below. Answer no at the skills prompt, or pass --skills none, to skip the agent skill files; to remove them later, see skills sync and the skills config section. Sample users are seeded automatically the first time the app queries the database, so there is no separate seed step.
A standalone mongod is enough to work through this quickstart. A replica set is only needed for transactions and change streams, and MongoDB Atlas already gives you one. The connection string the scaffold writes assumes a single-node replica set named rs0 on port 27017, so either run one locally or edit the string to point at your standalone server. If you use a standalone mongod, remove replicaSet=rs0 from the connection strings below (keep directConnection=true); a URL that names a replica set only connects to a server that belongs to one.
The scaffold writes a .env with a local replica-set connection string:
DATABASE_URL="mongodb://localhost:27017/mydb?replicaSet=rs0&directConnection=true"The generated scripts read environment variables directly rather than .env, and the CLI and the app use different variable names: the CLI commands read MONGODB_URL, and the app reads DATABASE_URL. Export both in the shell you work in:
export MONGODB_URL="mongodb://localhost:27017/mydb?replicaSet=rs0&directConnection=true"
export DATABASE_URL="$MONGODB_URL"If you use MongoDB Atlas, use the connection string from your Atlas cluster instead.
Create the first migration plan from the starter contract.
bun run migration:plan --name initpnpm run migration:plan --name inityarn migration:plan --name initnpm run migration:plan -- --name initThe output reports the planned operations: creating the users and posts collections and a unique index on users.email.
Apply the planned migration to MongoDB.
bun run migratepnpm run migrateyarn migratenpm run migrateThe output ends with a summary like Applied 3 operation(s) across 1 contract space. If it fails with a connection error, confirm MONGODB_URL is exported in this shell and points at a running MongoDB deployment; if the string still names replicaSet=rs0, that replica set has to exist.
The output ends with a summary like Applied 3 operation(s) across 1 contract space. If it fails with a connection error, confirm MONGODB_URL is exported in this shell and points at a running MongoDB deployment; if the string still names replicaSet=rs0, that replica set has to exist.
Start the app and confirm the sample query runs successfully.
bun run devpnpm run devyarn devnpm run devUse the URL or terminal output shown by your template. You should see the seeded users returned from MongoDB.
- Open
src/prisma/contract.prismaorsrc/prisma/contract.tsand change the starter model. - Use the MongoDB existing-project guide if you already have an app and database.
- Read the Prisma ORM overview when you want the concepts behind contracts, query APIs, and migrations.