2013-05-20 223 views
0

我在MongoDB中有以下集合。MongoDB和聚合框架

{ "_id" : ObjectId("519a35ee8f2ceda43f42add5"), "articulo" : "Sobre mongodb", "autor" : "xxxx1", "calificacion" : 3 } 
{ "_id" : ObjectId("519a360b8f2ceda43f42add6"), "articulo" : "Aggregation framework", "autor" : "xxxx1", "calificacion" : 5 } 
{ "_id" : ObjectId("519a361b8f2ceda43f42add7"), "articulo" : "Sobre journal", "autor" : "xxxx2", "calificacion" : 4 } 
{ "_id" : ObjectId("519a362e8f2ceda43f42add8"), "articulo" : "Manipulando datos", "autor" : "xxxx1", "calificacion" : 2 } 
{ "_id" : ObjectId("519a36418f2ceda43f42add9"), "articulo" : "MongoDB for dba", "autor" : "xxxx2", "calificacion" : 5 } 
{ "_id" : ObjectId("519a4aa18f2ceda43f42adda"), "articulo" : "ejemplo2", "autor" : "xxxx1", "calificacion" : 5 } 

我想算的文章(articulos),最大等級(calificacion)由作者(作者日期)的數量。

xxxx1有5 XXXX2的2個物品已與5

1頁的文章(我不知道什麼是最高等級)

我已經試過這樣:

db.ejemplo.aggregate([ 
    {$group:{_id: "$autor" , calificacion:{$max:"$calificacion" }}} 
]) 

但我只得到最高等級的作者。我可以使用Aggregation Framework嗎?

回答

2

你可以嘗試聚合操作是這樣的:

db.ejemplo.aggregate([ 
    { $group : { _id : { autor : "$autor", 
         calificacion : "$calificacion" }, 
       articulos : { $sum : 1 }, 
    }}, 
    { $sort : { "_id.calificacion" : -1 }}, 
    { $group : { _id : "$_id.autor", 
       calificacion : { $first : "$_id.calificacion" }, 
       articulos : { $first : "$articulos" }, 
    }} 
]) 

,結果是這樣的:

{ 
    "result" : [ 
     { 
      "_id" : "xxxx1", 
      "calificacion" : 5, 
      "articulos" : 2 
     }, 
     { 
      "_id" : "xxxx2", 
      "calificacion" : 5, 
      "articulos" : 1 
     } 
    ], 
    "ok" : 1 
} 

感謝, 琳達

+0

喔謝謝!!!!有用!!!!我在學習mongo,所以我需要了解我可以如何進行簡單查詢。 – drsromero