You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB + C#:如何查询所有标签并按使用频次降序排序

MongoDB查询:按标签使用频次从高到低统计所有标签

没问题,我帮你搞定这个标签统计的需求!你可以借助MongoDB的聚合框架来实现,具体的查询语句和逻辑拆解如下:

实现思路

要统计标签的使用频次并排序,核心需要三个步骤:

  • 把每个文档中的tags数组拆分成独立文档,让每个标签单独成为一条记录
  • 按标签分组,统计每个标签的出现次数
  • 按照统计的次数从高到低排序,最后按需调整输出格式

完整聚合查询语句

下面是可以直接运行的聚合查询,包含详细的阶段注释:

db.Sites.aggregate([
  // 拆分tags数组,每个标签生成一条独立文档
  { $unwind: "$tags" },
  // 按标签分组,统计每个标签的出现次数
  {
    $group: {
      _id: "$tags",
      count: { $sum: 1 }
    }
  },
  // 按出现次数从高到低排序
  { $sort: { count: -1 } },
  // 调整输出格式,让结果更直观(可选)
  {
    $project: {
      _id: 0,
      tag: "$_id",
      count: 1
    }
  }
])

查询结果说明

运行上述查询后,你会得到包含标签名称和对应频次的结果,完全符合你的需求:

[
  { "tag": "Tag1", "count": 4 },
  { "tag": "Tag3", "count": 3 },
  { "tag": "Tag4", "count": 2 },
  { "tag": "Tag2", "count": 1 }
]

可选:只返回标签名称列表

如果你只需要纯标签的排序列表,可以在聚合最后添加一个阶段,把标签收集成数组:

db.Sites.aggregate([
  { $unwind: "$tags" },
  { $group: { _id: "$tags", count: { $sum: 1 } } },
  { $sort: { count: -1 } },
  { $group: { _id: null, tags: { $push: "$_id" } } },
  { $project: { _id: 0, tags: 1 } }
])

这个查询会直接返回:

{ "tags": ["Tag1", "Tag3", "Tag4", "Tag2"] }

内容的提问来源于stack exchange,提问作者jack.pop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 04:37:48