MongoDB
Learn how to create a new Node.js or TypeScript project from scratch by connecting Prisma ORM to your MongoDB database and generating a Prisma Client for database access. The following tutorial introduces you to the Prisma CLI and Prisma Client.
Prerequisites
In order to successfully complete this guide, you need:
-
Node.js installed on your machine (see system requirements for officially supported versions)
-
Access to a MongoDB 4.2+ server with a replica set deployment. We recommend using MongoDB Atlas.
warningThe MongoDB database connector uses transactions to support nested writes. Transactions require a replica set deployment. The easiest way to deploy a replica set is with Atlas. It's free to get started.
Make sure you have your database connection URL at hand. If you don't have a database server running and just want to explore Prisma ORM, check out the Quickstart.
See System requirements for exact version requirements.
Create project setup
As a first step, create a project directory and navigate into it:
mkdir hello-prisma
cd hello-prisma
Next, initialize a Node.js project and add the Prisma CLI as a development dependency to it:
npm init -y
npm install prisma --save-dev
This creates a package.json
with an initial setup for a Node.js app.
You can now invoke the Prisma CLI by prefixing it with npx
:
npx prisma
Next, set up your Prisma ORM project by creating your Prisma Schema file with the following command:
npx prisma init --datasource-provider mongodb --output ../generated/prisma
This command does a few things:
- Creates a new directory called
prisma
that contains a file calledschema.prisma
, which contains the Prisma Schema with your database connection variable and schema models. - Sets the
datasource
to MongoDB and the output to a custom location, respectively. - Creates the
.env
file in the root directory of the project, which is used for defining environment variables (such as your database connection)
If you're using version control, like git, we recommend you add a line to your .gitignore
in order to exclude the generated client from your application. In this example, we want to exclude the generated/prisma
directory.
generated/prisma/
Note that the default schema created by prisma init
uses PostgreSQL as the provider
. If you didn't specify a provider with the datasource-provider
option, you need to edit the datasource
block to use the mongodb
provider instead:
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}