こんにちは、ゲームの記録が 2 つあります。
プレイヤーのリストを持つゲーム 1 p1( alice )、p2( bob )、p3( matt )、p4( tom )
プレーヤーのリストを含むゲーム 2 p1( alice )、p2( bob )、p3( jack )、p4( tom )
MongoDB コレクション ゲームにクエリを実行して、同じゲームにBOBとして登場する最も頻繁に登場する人物を並べ替えたいと考えています。この場合の良い結果は次のようになります。
Alice: appear 2 times
Tom: appear 2 time
Matt: appear 1 time
Jack: appear 1 time
SQLで私がした:
SELECT idplayer, COUNT(idplayer) AS countplayer
FROM (SELECT b.idgame, b.idplayer
FROM associations a, associations b
WHERE a.idplayer="BOB"
AND b.idgame=a.idgame
AND b.idplayer <> "BOB"
ORDER BY b.idgame DESC LIMIT 1000) as c
GROUP BY idplayer
ORDER BY countplayer DESC LIMIT 5;
mongoで私は次のようなことを試みています:
gamesCollection.find("{playerid : #}","BOB").sort(//counter).limit(5)...
MongoDB のこのクエリを修正するのを手伝ってくれる人はいますか? ありがとうございました
編集:
私は自分が望むものに近づいていると思いますが、それでも間違ったクエリです:
> db.games.aggregate("[{ $match: {playerid : 'bob'} }, {$group : { _id:null, cou
nt: { $sum: 1}} } ]")
解決策を提案してください。ありがとう
編集2
ゲーム ドキュメントの例:
{ "_id" : ObjectId("514d9afb6e058b8a806bdbc0"), "gameid" : 1, "numofplayers" : 3,
"playersList" : [{"playerid" : "matt" },{"playerid" : "bob"},{"playerid" : "alice"} ] }