MongoDB 按字段分组、计数并排序 desc

ber*_*rdh 12 mongodb

我有以下文档结构:

{
    ..
    "mainsubject" : {
        "code": 2768,
        "name": "Abc"
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要所有 mainsubject.code 的列表以及它们的使用频率。

在 SQL 中我会做这样的事情:

SELECT mainsubject_code, COUNT(*) AS 'count'
FROM products
GROUP BY mainsubject_code
ORDER BY count
Run Code Online (Sandbox Code Playgroud)

我已经能够将其分组并计数:

db.products.aggregate([
    {"$group" : {_id:"$mainsubject.code", count:{$sum:1}}}
]);
Run Code Online (Sandbox Code Playgroud)

但如何排序呢?

db.coll.aggregate([
  {
     $group: { 
        _id: "$mainsubject.code", 
        countA: { $sum: 1}
     }
  },
  {
    $sort:{$mainsubject.code:1}
  }
])
Run Code Online (Sandbox Code Playgroud)

不工作?

Ank*_*ary 10

在查看您的 sql 查询时,看起来您想按计数排序。因此,在 mongo 查询中,您还应该提及countA排序字段。

db.coll.aggregate([
  {
     $group: { 
        _id: "$mainsubject.code", 
        countA: { $sum: 1}
     }
  },
  {
    $sort:{'countA':1}
  }
])
Run Code Online (Sandbox Code Playgroud)