p1
또는 p2
을 어떻게 신경 쓸 수 있습니까?mongodb에서 키를 무시하는 방법?
플레이어가 player1인지 player2인지는별로 신경 쓰지 않습니다. 내가 관심을 갖는 것은 그들이 경기에서 서로 대결하는 것입니다. 나는이 형식의 문서를
, 그것은 토너먼트에서 경기 한 경기 나타냅니다 : 나는 'ben
'name
와 플레이어를 포함하는 모든 게임을 찾으려면
{u'_id': ObjectId('5490690b2e8738094b2f8753'),
u'date': u'2014-08-02',
u'game': 7,
u'players': {u'p1': {u'char': u'marth',
u'name': u'jack',
u'stocks': {u'stock1': {u'dmg': 133, u'time': 89},
u'stock2': {u'dmg': False,
u'time': False},
u'stock3': {u'dmg': False,
u'time': False},
u'stock4': {u'dmg': False,
u'time': False}}},
u'p2': {u'char': u'fox',
u'name': u'ben',
u'stocks': {u'stock1': {u'dmg': 45, u'time': 15},
u'stock2': {u'dmg': 77, u'time': 35},
u'stock3': {u'dmg': 102, u'time': 78},
u'stock4': {u'dmg': 80, u'time': 120}}}},
u'stage': u'bf',
u'tournament': u'King of Kings 2014'}
을; 그가 p1
또는 p2
이면 관련이 없습니다. 난 단지 내가이 작업을 수행 할 수 있다는 사실을 알고 :
db.games.aggregate([{'$project' : {'players.p1.name': 1}},
{'$group': {'_id' : '$players.p1.name', 'count': {'$sum': 1}}}])
출력 :
{u'ok': 1.0,
u'result': [{u'_id': u'ben', u'count': 4},
{u'_id': u'man', u'count': 21},
{u'_id': u'hammy', u'count': 5},
{u'_id': u'left', u'count': 9},
{u'_id': u'armed', u'count': 12},
{u'_id': u'icicle', u'count': 11},
{u'_id': u'2king', u'count': 45},
{u'_id': u'strangelove', u'count': 9},
{u'_id': u'jack', u'count': 16}]}
을하지만 그것은 단지 나에게 p1
을 제공합니다. 앞서 말했듯이, 나는 그들이 실제로 어떤 선수인지는 신경 쓰지 않습니다.
이러한 종류의 조회를 효율적으로 수행 할 수 있도록 내 데이터 구조 (스키마?)를 변경해야한다고 조언 해 주실 수 있습니까?
플레이어를 players
배열에 넣으려고했는데 (p1
/p2
키가 없지만 다른 쿼리를 어렵게 만드는 것처럼 보였습니다).
그래서 나는
해결 했습니까? – datasci