2017-02-19 60 views
1

我有一個結構,像下面MongoDB中:我該如何做多個貓鼬聚合搜索?

{ 
    memberId: 1236, 
    platform: "PC", 
    channel: "A", 
    page: "B", 
    ip: "192.168.10.1", 
    isActive: true, 
    createOn: "2017-02-19T09:28:43.688Z", 
    isSubmit: false, 
} 

現在我需要做的聚合搜索如下:

{ 

    memberId: 1236, 
    platform: "PC", 
    channel: "A", 
    page: "B", 
    pv: 111, 
    uv: 10 
} 

uv(用戶視圖)正是基於pv(頁面瀏覽量)不同通過ip

我該如何做多個聚合搜索?

我只能得到一個,pvuv,但不能同時得到它們。

我使用Node.js的

回答

0

你需要首先確定什麼是您的分組_id貓鼬。你可以認同的memberIdplatformchannelpage$sum獨特的情侶值的單個每頁$ip所有文件數和添加其他$group數不同的IP和$sum每頁:

Data.aggregate([{ 
    $group: { 
     _id: { 
      memberId: "$memberId", 
      platform: "$platform", 
      channel: "$channel", 
      page: "$page", 
      ip: "$ip" 
     }, 
     pv: { 
      $sum: 1 
     } 
    } 
}, { 
    $group: { 
     _id: { 
      memberId: "$_id.memberId", 
      platform: "$_id.platform", 
      channel: "$_id.channel", 
      page: "$_id.page" 
     }, 
     pv: { 
      $sum: "$pv" 
     }, 
     uv: { 
      $sum: 1 
     } 
    } 
}], function(err, res) { 
    if (err) 
     console.log(err); 
    else 
     console.log(res);) 
}) 

你可以找到樣本輸出/輸出here

+0

非常感謝!現在我已經在你的幫助下解決了這個問題。 一開始我也嘗試使用兩個或更多$組,但是我的邏輯不正確,所以我無法解決它。 – duoduo

+0

歡迎您,如果沒問題,您可以接受答案 –