mongodb mapreduce應該注意的兩個地方

轉自:

http://guudo.cn/tech/view/id/14294



  1. 當某天只有一條記錄:該記錄就不走reduce ,直接出來,你得到的value就只有一個userId字符串,其他啥也沒有。pv,uv 自然也沒有。所以 你在emit 應該初始化{pv:1,uv:1,userIds:this.userId}

  2. 當某天記錄特別多,超過100條的emit,mongo比較缺德的是,它會把這100的reduce的結果重新自動emit,所以這裏把map中emit的對象結構和reduce的return返回的對象結構寫成一致的原因。同一個key , 當每超過100個 emit,結果就會從新emit,所以這個結果的pv uv 是無效的,這裏只會用到重新emit的userIds,然後在繼續在reduce進行統計。

這兩個點是mongo mapreduce 比較坑爹的地方。注意這兩點其他都OK了



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章