2014-04-02 90 views
0

我有這樣的結構MongoDB的聚集數

{ 
    "_id" : ObjectId("42342342hj234h2j4h23j4h32j"), 
    "email" : "[email protected]", 
    "points" : "5" 
} 

我有100k左右+文件。

我怎麼能想出這樣的結果:

{ 
    "frequency" : 5 
    "email_count" : 100 
} 
{ 
    "frequency" : 4 
    "email_count" : 24 
} 
{ 
    "frequency" : 3 
    "email_count" : 32 
} 

其中頻率描繪了一封電子郵件,多少次出現在集合和電子郵件計數描繪多少封電子郵件有一個特定頻率 (例如一些。 @ email.com出現5倍的數據設定爲[email protected]其中如頻率= 5,EMAIL_COUNT = 2)

由於

回答

0

可以實現這種使用.aggregate()結果和使用的「雙「$group階段:

db.collection.aggregate([ 
    { "$group": { 
     "_id": "$email", 
     "frequency": { "$sum": 1 } 
    }}, 
    { "$group": { 
     "_id": "$frequency", 
     "count": { "$sum": 1 } 
    }} 
]) 

所以,當你想通過這樣,第一個階段是‘計數的電子郵件’相同的事件‘’地址集合中,這就是‘頻率’。

第二階段,然後在這個「頻率」值的相同出現處「羣組」,並「計數」發現相同值的次數。

熟悉聚合概念和available operators。這將是非常值得的。

+0

嗨,謝謝你指出。由於我對MongoDb非常陌生。看起來我必須做更多的閱讀 – user3487461