Files
doodle-store/apps/server/.agents/skills/prisma-orm-setup/references/v6-mongodb.md
T

2.7 KiB

MongoDB Setup

This reference configures Prisma ORM 6 MongoDB applications. Preserve an existing Prisma 6 app or use this path when 6 is explicitly selected. Do not apply Prisma 7 SQL adapters here.

Prerequisites

  • MongoDB 4.2+
  • Replica Set configured (required for transactions)
  • Latest Prisma 6.x release, or your team's pinned Prisma 6 version
  • A Node.js and TypeScript version supported by the selected Prisma 6 release

1. Schema Configuration

Use the standard Prisma 6 MongoDB setup with prisma-client-js.

In prisma/schema.prisma:

datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

Driver Adapters

Do not apply the Prisma 7 SQL adapter setup here. MongoDB does not use a SQL @prisma/adapter-* package.

ID Field Requirement

MongoDB models must have a mapped _id field using @id and @map("_id"), usually of type String with auto() and db.ObjectId.

model User {
  id    String @id @default(auto()) @map("_id") @db.ObjectId
  email String @unique
  name  String?
  posts Post[]
}

Relations

Relations in MongoDB expect IDs to be db.ObjectId type.

model Post {
  id       String @id @default(auto()) @map("_id") @db.ObjectId
  author   User   @relation(fields: [authorId], references: [id])
  authorId String @db.ObjectId
}

2. Environment Variable

In .env:

DATABASE_URL="mongodb+srv://user:password@cluster.mongodb.net/mydb?retryWrites=true&w=majority"

Migrations vs Introspection

  • No Migrations: MongoDB is schema-less. prisma migrate commands do not work.
  • db push: Use prisma db push to sync indexes and constraints.
  • db pull: Use prisma db pull to generate schema from existing data (sampling).

Client setup

Keep existing pinned versions. For a new explicitly selected Prisma 6 setup:

npm install --save-dev prisma@6
npm install @prisma/client@6 dotenv

Generate with the matching CLI, then initialize the client without a SQL adapter:

import 'dotenv/config'
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

Use a read-only model query to verify connectivity. Review any index changes before applying db push to an existing database.

Common Issues

"Transactions not supported"

Ensure your MongoDB instance is a Replica Set. Standalone instances do not support transactions. Atlas clusters are replica sets by default.

"Invalid ObjectID"

Ensure fields referencing IDs are decorated with @db.ObjectId if the target is an ObjectID.

References