私は自分のニーズに合ったデータベースを探していますが、私はmongodbでテストを行っていましたが、私が望むことを実行できるかどうかはわかりません。Mongodbグループ要素内のjson構造
私は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
}]
}
だから私はこのように見えるゲームのコレクションを持っています。 私は、プレイヤーの最も一般的な年齢を問い合わせたり、年齢をソートしたりできます。プレーヤーが2種類のゲームに参加しているかどうかは気にしません。私はすべてのゲームの最も一般的な年齢をプレーヤーとチームから独立させたいだけです。
私は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}]
私は検索しましたが、このクエリを実行する方法が見つかりませんでした。 私はこのデータベースには数百万のゲームがたくさんあると言わなければならないので、これを行うためのクエリがどのようにパフォーマンスに影響するのか知りたい。私は200msのクエリを望んでいませんが、私も1時間のクエリをしたくありません。
私はmongodb-scala-conectorを使用してクエリを実行していますが、どの言語でも構いませんが、私のニーズに合わせて解析することができます。
私はこれを行うために他のデータベースを調べましたが、mongodbはjsonを直接挿入できるため、これが私の最初の選択でした。しかし、私のニーズに合っていなければ、私もApache Cassandraを探して、それが適合しなければ、jsonを定義されたテーブルに解析するリレーショナルデータベースに行きます。次の集約は何が必要提供する場合
をうわー、それが動作します。 2つのクエリの動作。どうもありがとう! – Raxkin