2017-12-25 19 views
0

저는 MongoDB/Mongoose에 대해 다소 새로운 것으로서, 제가 찾고있는 결과를 얻는 방법을 모릅니다. 내가 원하는 것은 모든 무기의 합을 포함 각 라운드 (사망, 죽음, 도움, 헤드 샷, 촬영)에 필드를 추가하는 쿼리입니다
Mongoose/MongoDB는 서브 디렉토리를위한 배열의 필드를 합계합니다.

{ 
    "playerId" : "", 
    "sessions" : [ 
     { 
      "start" : "", 
      "end" : "", 
      "join" : "", 
      "leave" : "", 
      "rounds" : [, 
       { 
        "name" : "roundName", 
        "weapons" : [ 
         { 
          "name" : "weaponName", 
          "kills" : 1, 
          "assits" : 1, 
          "deaths" : 1, 
          "shots" : 1, 
          "headshots" : 1 
         }, 
         { 
          "name" : "weaponName", 
          "kills" : 1, 
          "assits" : 1, 
          "deaths" : 1, 
          "shots" : 1, 
          "headshots" : 1 
         } 
        ] 
       }, 
       { 
        "name" : "roundName", 
        "weapons" : [ 
         { 
          "name" : "weaponName", 
          "kills" : 1, 
          "assits" : 1, 
          "deaths" : 1, 
          "shots" : 1, 
          "headshots" : 1 
         }, 
         { 
          "name" : "weaponName", 
          "kills" : 1, 
          "assits" : 1, 
          "deaths" : 1, 
          "shots" : 1, 
          "headshots" : 1 
         } 
        ] 
       }, 
       { 
        "name" : "roundName", 
        "weapons" : [ 
         { 
          "name" : "weaponName", 
          "kills" : 1, 
          "assits" : 1, 
          "deaths" : 1, 
          "shots" : 1, 
          "headshots" : 1 
         }, 
         { 
          "name" : "weaponName", 
          "kills" : 1, 
          "assits" : 1, 
          "deaths" : 1, 
          "shots" : 1, 
          "headshots" : 1 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

: 기본적으로이 같은 문서가 있습니다. 가능한 경우 전체 세션에도 동일하게 적용됩니다. 어떤 도움이라도 대단히 감사하겠습니다!

+0

스키마를 설명하는 대신 컬렉션의 예제 문서를 포함하도록 질문을 편집 해주십시오. . 또한 예제 문서의 예상 출력을 표시하는 것이 가장 좋습니다. – chridam

+0

필자는 필자가 필요로하는 것과 예제 문서로 질문을 썼다. 희망이 도움이! – Nicolas

답변

0

당신에게 세션 -> 라운드로 그룹화 통계의 목록을 제공해야 다음 여기에 가정은 $ sessions.Rounds.Weapons이 분야의 shootingGame 2) 이름을들 수 있습니다 1) 컬렉션의 이름입니다

db.shootingGame.aggregate(
    [ 
     {$group: { 
     _id: "$sessions.Rounds", 
     "sumkills": {$sum: "$sessions.Rounds.Weapons.kills" }, 
     "sumasists": {$sum: "$sessions.Rounds.Weapons.assists" }, 
     "sumdeaths": {$sum: "$sessions.Rounds.Weapons.deaths" }, 
     "sumheadshots": {$sum: "$sessions.Rounds.Weapons.headshots" }, 
     "sumshots": {$sum: "$sessions.Rounds.Weapons.shots" } 
    }} 
    ] 
) 

그러나 세션별로 추가로 그룹화하려면이 결과를 다른 문서에 저장하고 라운드 당 다른 $ sum 그룹을 실행해야합니다.

+0

귀하의 접근 방법을 시도하고 모든 필드에 대해 0의 값을 얻었습니다. 하지만 그건 내 문서가 어떻게 생겼는지에 대한 나의 가난한 설명 때문일 수 있습니다. 그래서 나는 나의 질문에 예제 문서를 추가했다. – Nicolas