2016-03-28 60 views
0

我試圖創建一個GROUP_BY/MySQL的相當於在RavenDbRavenDb的Map/Reduce嵌套數組

JSON文檔的樣子:

{ 
"region" : "EUW", 
"players" : [ 
     { 
      "position" : 2, 
      "summoner_id" : 123456, 
      "game_won": 1 
     }, 
     { 
      "position" : 1, 
      "summoner_id" : 123459, 
      "game_won": 0 
     }, 
     { 
      "position" : 3, 
      "summoner_id" : 123458, 
      "game_won": 1 
     }, 
     { 
      "position" : 4, 
      "summoner_id" : 123457, 
      "game_won": 0 
     } 
      ] 
} 

具有多個文檔的這個樣子,我需要找到的howmany次summoner_id 123456已經有2位或任何其他位置的1-6和的howmany時間沒有他在那個位置

索引需要是對區域可查詢取勝,summoner_id

結果會是什麼樣子

{ 
    "positions" : 
     [ 
      { "position" : 1, 
      "total" : 123, 
      "won" : 65 
      }, 
      { "position" : 2, 
      "total" : 37, 
      "won" : 10 
      } 
     ] 
    } 

我現在有

地圖

from game in docs.Games 
from player in game.Players 
select new { 
    player.position, 
    player.summoner_id, 
    game.region, 
    PosCounter = 1, 
    WonCounter = player.game_won == 1 ? 1 : 0 
} 

減少

from result in results 
group result by result.Position into g 
select new { 
    g.Key.position, 
    g.Key.summoner_id, 
    g.Key.region, 
    PosCounter = g.Sum(x => x.PosCounter), 
    WonCounter = g.Sum(x => x.WonCounter) 
} 

回答

0

屬性名稱是區分大小寫的。你需要有:

{ 
"region" : "EUW", 
"players" : [ 
     { 

但用途:

from game in docs.Games 
from player in game.Players 

而且,在你的文件的元數據,請確保您有:

"Raven-Entity-Name": "Games"