以下代码先通过时间段检索数据,将检索出数据中的tags分解成多条数据,之后通过group对tags进行分组统计,然后使用sort对数据进行倒序排序,随后返回100条记录。

db.doc.aggregate([
    {"$match":{"date":{"$gte":from_date,"$lt":to_date}}},
    {"$unwind": "$tags"},
    {"$group":{"_id":"$tags","tag_total":{"$sum":1}}},
    {"$sort": {"tag_total": -1}},
    {"$limit":100}
])