Hey Mike, thanks for the great question! Speaking as someone who's working on MongoDB for Prisma, I'll try to leave my bias at the door.
My personal suggestion would be to use what you know. If you're comfortable working with Mongoose, then go with that. It was the first major ORM to be written in Node, so it's had many years to add useful features and squash bugs.
What you may find down the road with Mongoose is that it's easy to lose track of the structure of your database. As you add features and fix bugs, the structure of your data will change. This is best illustrated with an example:
Maybe your application has zip codes and for the longest time it was just a number, but now you realize that it should actually be a string. If you simply adjust the type from a number to a string in Mongoose and start writing strings to zipCode, Mongoose will merrily do that for you. Without consciously migrating your existing data, your database will have zip codes with both numbers and strings. This may introduce bugs in your application because Mongoose will lead you to believe that zip codes are all strings. This may seem like a simple fix, but these changes compound over the lifetime of an application.
Prisma enforces a schema on top of MongoDB. You can find an example schema in our documentation. With a schema, you always know the structure of your database.
We enforce a schema because we believe that:
- Understanding the structure of your data is essential to maintaining a project over a long period of time. This is especially important if you plan to onboard new developers.
- Changing the structure of your data (e.g. number to string) is always an important event. It shouldn't appear to work when it doesn't. We can provide tools like Prisma Migrate to streamline such events.
- By knowing the schema, you can build sophisticated tools to provide a better developer experience that are tailored to your application. Tools like our type-safe Prisma Client and Prisma Studio.
MongoDB support in Prisma is still in it's early days, we don't yet have a Migration tool or Studio support. What we do have is a type-safe, auto-generated database client called the Prisma Client. You can get a better sense of what the Prisma Client supports in our documentation. It's not a 1:1 mapping with Mongoose, but we support most of the things you need to do in Mongoose in a more type-safe way.
We'll also make it easy to switch from Mongoose to Prisma once we introduce Introspection Support for MongoDB. So you have time to make your decision.
Hope this helps!