| name | prisma-client-api-query-options |
| description | Query Options. Reference when using this Prisma feature. |
| license | MIT |
| metadata | {"author":"prisma","version":"7.0.0"} |
Query Options
Options for controlling query behavior.
select
Choose specific fields to return:
const user = await prisma.user.findUnique({
where: { id: 1 },
select: {
id: true,
name: true,
email: true,
}
})
Select relations
const user = await prisma.user.findUnique({
where: { id: 1 },
select: {
name: true,
posts: {
select: {
title: true,
published: true
}
}
}
})
Select with include inside
const user = await prisma.user.findMany({
select: {
name: true,
posts: {
include: {
comments: true
}
}
}
})
Select relation count
const users = await prisma.user.findMany({
select: {
name: true,
_count: {
select: { posts: true }
}
}
})
include
Include related records:
const user = await prisma.user.findUnique({
where: { id: 1 },
include: {
posts: true,
profile: true
}
})
Filtered include
const user = await prisma.user.findUnique({
where: { id: 1 },
include: {
posts: {
where: { published: true },
orderBy: { createdAt: 'desc' },
take: 5
}
}
})
Nested include
const user = await prisma.user.findUnique({
where: { id: 1 },
include: {
posts: {
include: {
comments: {
include: {
author: true
}
}
}
}
}
})
Include relation count
const users = await prisma.user.findMany({
include: {
_count: {
select: { posts: true, followers: true }
}
}
})
omit
Exclude specific fields:
const user = await prisma.user.findUnique({
where: { id: 1 },
omit: {
password: true
}
})
Omit in relations
const users = await prisma.user.findMany({
omit: { password: true },
include: {
posts: {
omit: { content: true }
}
}
})
Note: Cannot use select and omit together.
where
Filter records:
const users = await prisma.user.findMany({
where: {
email: { contains: '@prisma.io' },
role: 'ADMIN'
}
})
See filters.md for detailed filter operators.
orderBy
Sort results:
const users = await prisma.user.findMany({
orderBy: { name: 'asc' }
})
const users = await prisma.user.findMany({
orderBy: [
{ role: 'desc' },
{ name: 'asc' }
]
})
Order by relation
const users = await prisma.user.findMany({
orderBy: {
posts: { _count: 'desc' }
}
})
Null handling
const users = await prisma.user.findMany({
orderBy: {
name: { sort: 'asc', nulls: 'last' }
}
})
take & skip
Pagination:
const users = await prisma.user.findMany({
take: 10,
skip: 0
})
const users = await prisma.user.findMany({
take: 10,
skip: 10
})
Negative take (reverse)
const lastUsers = await prisma.user.findMany({
take: -10,
orderBy: { id: 'asc' }
})
cursor
Cursor-based pagination:
const firstPage = await prisma.user.findMany({
take: 10,
orderBy: { id: 'asc' }
})
const nextPage = await prisma.user.findMany({
take: 10,
skip: 1,
cursor: { id: firstPage[firstPage.length - 1].id },
orderBy: { id: 'asc' }
})
distinct
Return unique values:
const cities = await prisma.user.findMany({
distinct: ['city'],
select: { city: true }
})
Multiple distinct fields
const locations = await prisma.user.findMany({
distinct: ['city', 'country']
})