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',
          } 
    }
  })