搜尋

首頁  >  問答  >  主體

mongodb - Mongo group分組後,怎麼對分組後的結果進行從大到小排序,並取前5個

BasicDBObject key = new BasicDBObject("ip",true);
BasicDBObject initial = new BasicDBObject("count",0);
BasicDBObject cond = 。。。。
String reduce = "function(obj,prev){prev.count+=1}";
String finalize =????? 

col.group(key,initial,cond,reduce,finalize);

最後的結果,我想要count數量從大到小排列,並且只取前五個,能用finalize實現嗎?具體怎麼寫函數呢? ?或是能用什麼方法實現? ? ? ?

怪我咯怪我咯2796 天前1155

全部回覆(2)我來回復

  • 迷茫

    迷茫2017-04-24 09:16:07

    老實說,mongo下面的group-by還是比較麻煩的。原生mongo語句,透過管道聚合查詢

    sqldb.term.aggregate([
         {$match:{library_id:3607}},
         {$limit:5},
         {$group:{_id:"$version", count: {$sum:1}}},
         {$sort:{count:-1}}
    ])
    

    term:你要查詢的集合名稱
    $match:匹配條件,可選
    $limit:結果條數,可選
    $group:聚合規則
    :結果條數,可選$group

    :聚合規則

    :結果條數,可選

    🎜$group🎜:聚合規則🎜結果排序,-1表示降序🎜 🎜http://docs.mongoing.com/manual-zh/reference/operator/aggregation.html#aggregation-pipeline-operator-reference🎜

    回覆
    0
  • 高洛峰

    高洛峰2017-04-24 09:16:07

    使用aggregate進行分組計算並排序。
    簡單實例

    db.collection.aggregate([  {$group:{_id:"$source",total:{$sum:"$changeValue"}}},{$limit:1}])
    

    參閱http://docs.mongodb.org/manual/reference/command/aggregate/

    回覆
    0
  • 取消回覆