Prisma - GroupBy 关系(例如 "Most used Hashtags")
Prisma - GroupBy relation (e.g "Most used Hashtags")
我想在我的应用程序中显示“最常用的标签”。
这只是一个简单的多对多关系:
model Post {
id Int @id @default(autoincrement())
title String @db.VarChar(255)
description String @db.VarChar(255)
hashtags PostHashtag[]
}
model PostHashtag {
post Post @relation(fields: [postId], references: [id])
postId Int
hashtag Hashtag @relation(fields: [hashtagId], references: [id])
hashtagId Int
@@id([postId, hashtagId])
@@unique([postId, hashtagId])
}
model Hashtag {
id Int @id @default(autoincrement())
name String @db.VarChar(24)
posts PostHashtag[]
}
我真的找不到对 PostHashtag 中“Hashtag”的“名称”字段进行分组的方法 table。
我的目标是查询 returns 我使用的前 15 个主题标签。
不幸的是,文档无法帮助我解决这个问题。
这将 return 按 posts
计数排序的前 15 个使用的主题标签,结果中包含计数:
const topHashtags = await prisma.hashtag.findMany({
take: 15,
orderBy: {
posts: { _count: 'desc' },
},
include: {
_count: {
select: { posts: true },
},
},
});
比我想象的要容易:
return await prisma.hashtag.groupBy({
by: ['name'],
_count:{
name: true
},
orderBy: {
_count: {
name: 'desc',
}
}
})
我想在我的应用程序中显示“最常用的标签”。
这只是一个简单的多对多关系:
model Post {
id Int @id @default(autoincrement())
title String @db.VarChar(255)
description String @db.VarChar(255)
hashtags PostHashtag[]
}
model PostHashtag {
post Post @relation(fields: [postId], references: [id])
postId Int
hashtag Hashtag @relation(fields: [hashtagId], references: [id])
hashtagId Int
@@id([postId, hashtagId])
@@unique([postId, hashtagId])
}
model Hashtag {
id Int @id @default(autoincrement())
name String @db.VarChar(24)
posts PostHashtag[]
}
我真的找不到对 PostHashtag 中“Hashtag”的“名称”字段进行分组的方法 table。
我的目标是查询 returns 我使用的前 15 个主题标签。 不幸的是,文档无法帮助我解决这个问题。
这将 return 按 posts
计数排序的前 15 个使用的主题标签,结果中包含计数:
const topHashtags = await prisma.hashtag.findMany({
take: 15,
orderBy: {
posts: { _count: 'desc' },
},
include: {
_count: {
select: { posts: true },
},
},
});
比我想象的要容易:
return await prisma.hashtag.groupBy({
by: ['name'],
_count:{
name: true
},
orderBy: {
_count: {
name: 'desc',
}
}
})