SuperAPI AI 工具集

prisma-database-setup-mongodb

数据与分析

查看项目

更新于 10-16 04:17

技能介绍

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 迁移命令;事务依赖副本集。资料未提供其他平台、收费或价格信息。