我正在尋找一個符合我需求的數據庫,我正在用MongoDB進行測試,但我不知道我是否能夠做到這一點,我想要的。Mongodb group by json structure裏面的元素
我有我的MongoDB集合這樣一個JSON文件:
{
"gameId": 1,
"gameDuration": 1234,
"teams": [{
"teamId": 1,
"win": true
}, {
"teamId": 2,
"win": false
}],
"players": [{
"playerId": 1,
"teamId": 1,
"age": 32
}, {
"playerId": 2,
"teamId": 2,
"age": 52
}]
}
所以我要的遊戲,像這樣的集合。 我希望能夠查詢玩家最常見的年齡,或者獲得排序的年齡。我不在乎一個球員是否參加了兩場不同的比賽,我只是希望所有比賽中最常見的年齡都與球員和球隊無關。
所以,如果我有4場比賽:
[{
"gameId": 1,
"gameDuration": 1234,
"teams": [{
"teamId": 1,
"win": true
}, {
"teamId": 2,
"win": false
}],
"players": [{
"playerId": 1,
"teamId": 1,
"years": 32
}, {
"playerId": 2,
"teamId": 2,
"years": 52
}]
},
{
"gameId": 2,
"gameDuration": 1234,
"teams": [{
"teamId": 1,
"win": true
}, {
"teamId": 2,
"win": false
}],
"players": [{
"playerId": 1,
"teamId": 1,
"years": 25
}, {
"playerId": 2,
"teamId": 2,
"years": 23
}]
},
{
"gameId": 3,
"gameDuration": 1234,
"teams": [{
"teamId": 1,
"win": true
}, {
"teamId": 2,
"win": false
}],
"players": [{
"playerId": 1,
"teamId": 1,
"years": 32
}, {
"playerId": 2,
"teamId": 2,
"years": 23
}]
},
{
"gameId": 4,
"gameDuration": 1234,
"teams": [{
"teamId": 1,
"win": true
}, {
"teamId": 2,
"win": false
}],
"players": [{
"playerId": 1,
"teamId": 1,
"years": 32
}, {
"playerId": 2,
"teamId": 2,
"years": 27
}]
}
]
排序年齡的結果應該是:[32, 23, 52, 25, 27]
還是最常見的年齡應該在32
否則將被極大地得到各年齡段的計數。 [{"32": 3}, {"23": 2}, {"25": 1}, {"27": 1}]
我有搜索,但無法找到一種方法來執行此查詢。 我不得不說,這個數據庫將有很多遊戲,數百萬,所以我想知道如何做一個查詢會影響性能。我不想要一個200毫秒的查詢,但我也不想要一個1小時的查詢。
我使用mongodb-scala-conector做查詢,但它可以用任何語言,然後我可以嘗試解析我的需要。
我期待其他數據庫做到這一點,但作爲MongoDB讓我直接插入JSON,這是我的第一個選擇。但如果它不符合我的需要,我也尋找Apache Cassandra,如果不適合我會去關係數據庫,解析JSON到定義的表。
哇,它的工作原理。 2查詢的作品。非常感謝! – Raxkin