MongoDB Setup 是 Prisma 提供的一项功能参考,用于在 Prisma ORM 中接入 MongoDB 数据库。
用途 该技能面向需要在 Prisma 项目中使用 MongoDB 的开发者,提供从版本要求、schema 配置到常见问题排查的参考说明。
版本限制 资料明确警告:MongoDB 在 Prisma ORM v7 中不受支持。对 MongoDB 的支持计划在未来的 v7 版本中提供。如果需要使用 MongoDB,必须使用 Prisma ORM v6。
前置条件
- MongoDB 4.2+
- 已配置副本集(Replica Set,事务所必需)
- Prisma ORM v6.x
Schema 配置(v6) 在 prisma/schema.prisma 中配置数据源与生成器:
datasource db { provider = "mongodb" url = env("DATABASE_URL") }
generator client { provider = "prisma-client-js" }
ID 字段要求 MongoDB 模型必须有一个映射的 _id 字段,使用 @id 和 @map("_id"),通常为 String 类型并配合 auto() 与 db.ObjectId:
model User { id String @id @default(auto()) @map("_id") @db.ObjectId email String @unique name String? }
关系 MongoDB 中的关系要求 ID 为 db.ObjectId 类型:
model Post { id String @id @default(auto()) @map("_id") @db.ObjectId author User @relation(fields: [authorId], references: [id]) authorId String @db.ObjectId }
环境变量 在 .env 中设置:
DATABASE_URL="mongodb+srv://user:password@cluster.mongodb.net/mydb?retryWrites=true&w=majority"
迁移与内省
- 无迁移:MongoDB 是无模式的,prisma migrate 命令不可用。
- db push:使用 prisma db push 同步索引与约束。
- db pull:使用 prisma db pull 从现有数据生成 schema(采样)。
常见问题
- “Transactions not supported”:确保 MongoDB 实例为副本集。独立实例不支持事务。Atlas 集群默认即为副本集。
- “Invalid ObjectID”:如果目标为 ObjectID,确保引用 ID 的字段使用 @db.ObjectId 修饰。
适用场景 适用于使用 Prisma ORM v6 连接 MongoDB 的项目,尤其是需要配置 schema、处理 ObjectId 主键与关系、同步索引或从现有数据库生成 schema 的场景。
限制 MongoDB 不支持 Prisma ORM v7;不支持 prisma migrate 迁移命令;事务依赖副本集。资料未提供其他平台、收费或价格信息。