가장 많이 사용되는 카드 조합에 대한 통계를 작성하고 있습니다. $ players.spells.d의 _id를 사용하여 $ 플레이어를 풀고 쉽게 그룹화 할 수 있습니다. 이것은 매우 빠르게 작동하고 내가 원하는 것을 정확하게 제공합니다.MongoDB 집계 동일한 배열 요소의 합계 방법?
내가 가진 문제는 내가 고려 카드의 레벨을하는 방법을 알아낼 수 없습니다입니다. (카드를 업그레이드 할 수 있음) - 레벨이 누락되면 레벨이 1임을 의미합니다. 그래서 마지막에 얻고 자하는 것은 갑판 ID입니다 (모든 카드의 조합입니다. 아래의 $ players.spells.d 그룹화로 이미 생성 된 마술 트릭을 수행하십시오.), 해당 조합에 대한 각 개별 카드의 평균 레벨. 사전에 어떤 도움
{
"_id" : 123,
"players" : [
{
"id" : 41,
"spells" : [
{
"card" : 11,
"level" : 2
},
{
"card" : 12
},
{
"card" : 13,
"level" : 2
},
{
"card" : 14
},
{
"card" : 15,
"level" : 2
},
{
"card" : 16,
"level" : 2
},
{
"card" : 17,
"level" : 2
},
{
"card" : 18
}
]
},
{
"id" : 31,
"spells" : [
{
"card" : 7
},
{
"card" : 88
},
{
"card" : 9
},
{
"card" : 10
},
{
"card" : 11
},
{
"card" : 12
},
{
"card" : 13
},
{
"card" : 14
}
]
}
]
}
감사 :
db.matches.aggregate([
{$unwind: "$players"},
{$group: {
'_id': '$players.spells.card',
'count': {'$sum' : 1}
}
},
{$sort: {'count' : -1}}
]);
여기 일치하는 문서 모습처럼, 각 경기는 두 선수가 무엇을 :
이 내 쿼리입니다! 여기
갑판 ID가 무엇이며 players.spells.d은 무엇인가? – sergiuz
나는 위의 쿼리를 업데이트했으며 d는 카드로되어 있었고, 모든 사람들을 위해 더 쉽게 읽고 쓸 수 있도록했습니다. – ruinernix