# Mongoose (Prisma ORM v6) (/docs/orm/v6/more/comparisons/prisma-and-mongoose) > For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL. Learn how Prisma ORM compares to Mongoose. Location: ORM > v6 > More > Comparisons > Mongoose This page compares the Prisma ORM and [Mongoose](https://mongoosejs.com/docs/guide.html) APIs. If you want to learn how to migrate from Mongoose to Prisma, check out this [guide](https://www.prisma.io/docs/guides/switch-to-prisma-orm/from-mongoose). ## Fetching single objects [#fetching-single-objects] **Prisma ORM** ```ts const user = await prisma.user.findUnique({ where: { id: 1, }, }); ``` **Mongoose** ```ts const result = await User.findById(1); ``` ## Fetching selected scalars of single objects [#fetching-selected-scalars-of-single-objects] **Prisma ORM** ```ts const user = await prisma.user.findUnique({ where: { id: 1, }, select: { name: true, }, }); ``` **Mongoose** ```ts const user = await User.findById(1).select(["name"]); ``` ## Fetching relations [#fetching-relations] **Prisma ORM** #### Using include ```ts const userWithPost = await prisma.user.findUnique({ where: { id: 2, }, include: { post: true, }, }) ``` #### Fluent API ```ts const userWithPost = await prisma.user .findUnique({ where: { id: 2, }, }) .post() ``` **Mongoose** ```ts const userWithPost = await User.findById(2).populate("post"); ``` ## Filtering for concrete values [#filtering-for-concrete-values] **Prisma ORM** ```ts const posts = await prisma.post.findMany({ where: { title: { contains: "Hello World", }, }, }); ``` **Mongoose** ```ts const posts = await Post.find({ title: "Hello World", }); ``` ## Other filter criteria [#other-filter-criteria] **Prisma ORM** Prisma ORM generates many [additional filters](https://www.prisma.io/docs/orm/v6/prisma-client/queries/filtering-and-sorting) that are commonly used in application development. **Mongoose** Mongoose exposes the [MongoDB query selectors](https://www.mongodb.com/docs/manual/reference/mql/query-predicates/logical/) as filter criteria. ## Relation filters [#relation-filters] **Prisma ORM** Prisma ORM lets you filter a list based on a criteria that applies not only to the models of the list being retrieved, but to a *relation* of that model. For example, the following query returns users with one or more posts with "Hello" in the title: ```ts const posts = await prisma.user.findMany({ where: { Post: { some: { title: { contains: "Hello", }, }, }, }, }); ``` **Mongoose** Mongoose doesn't offer a dedicated API for relation filters. You can get similar functionality by adding an additional step to filter the results returned by the query. ## Pagination [#pagination] **Prisma ORM** Cursor-style pagination: ```ts const page = prisma.post.findMany({ before: { id: 242, }, last: 20, }); ``` Offset pagination: ```ts const cc = prisma.post.findMany({ skip: 200, first: 20, }); ``` **Mongoose** ```ts const posts = await Post.find({ skip: 200, limit: 20, }); ``` ## Creating objects [#creating-objects] **Prisma ORM** ```ts const user = await prisma.user.create({ data: { name: "Alice", email: "alice@prisma.io", }, }); ``` **Mongoose** #### Using create ```ts const user = await User.create({ name: 'Alice', email: 'alice@prisma.io', }) ``` #### Using save ```ts const user = new User({ name: 'Alice', email: 'alice@prisma.io', }) await user.save() ``` ## Updating objects [#updating-objects] **Prisma ORM** ```ts const user = await prisma.user.update({ data: { name: "Alicia", }, where: { id: 2, }, }); ``` **Mongoose** #### Using findOneAndUpdate ```ts const updatedUser = await User.findOneAndUpdate( { _id: 2 }, { $set: { name: 'Alicia', }, } ) ``` #### Using save ```ts user.name = 'Alicia' await user.save() ``` ## Deleting objects [#deleting-objects] **Prisma ORM** ```ts const user = prisma.user.delete({ where: { id: 10, }, }); ``` **Mongoose** ```ts await User.deleteOne({ _id: 10 }); ``` ## Batch deletes [#batch-deletes] **Prisma ORM** ```ts const users = await prisma.user.deleteMany({ where: { id: { in: [1, 2, 6, 6, 22, 21, 25], }, }, }); ``` **Mongoose** ```ts await User.deleteMany({ id: { $in: [1, 2, 6, 6, 22, 21, 25] } }); ``` ## Related pages - [`Drizzle`](https://www.prisma.io/docs/orm/v6/more/comparisons/prisma-and-drizzle): Learn how Prisma ORM compares to Drizzle. - [`Sequelize`](https://www.prisma.io/docs/orm/v6/more/comparisons/prisma-and-sequelize): Learn how Prisma ORM compares to Sequelize. - [`TypeORM`](https://www.prisma.io/docs/orm/v6/more/comparisons/prisma-and-typeorm): Learn how Prisma compares to TypeORM.