작성
·
539
0
제가 사용하려는 JSON파일을 파이썬에서
.keys()해보면
dict_keys(['gameId', 'platformId', 'gameCreation', 'gameDuration', 'queueId', 'mapId', 'seasonId', 'gameVersion', 'gameMode', 'gameType', 'teams', 'participants', 'participantIdentities'])
키값이 이렇게 되있습니다.
(롤 게임 api데이터입니다.)
강의에서 배운 내용을 활용한다면
maps = it.find({'mapId' : 11})
for map in maps:
print(map)
이런식으로 하면 it라는 콜렉션에 있는 것 다큐먼트들 중에
mapId가 11인 것들을 하나씩 프린트 하는 거 같습니다.
여기까지는 알겠는데 제가 궁금한건 저거로는 원하는 값을 검색하기가 어렵습니다.
가령 'participantIdentities'에는
{}안에 {}가 10개가 있습니다.
그니까 위에 mapId는
mapid : 11
이런식으로 한칸??한줄로 되있는데
participantIdentities는
{
{}, {} , {}, {}, {}.....
}
이런식으로 10개가 있습니다.
(게임하는 사람이 10명이라서요)
그리고 그 안의 {}마다
'summonerName' : 금똥왁왁
이런식으로 제가 찾으려는 정보들이 있습니다.
다시 정리하자면
'mapId' : 11
인데반해,
'participantIdentities' :
{
{'summonerName' : 금똥왁왁}, {'summonerName' : 페이커}, {'summonerName' : 데프트}........
}
이런식으로 구성되어 있습니다.
이때 제가 summonerName이 데프트인 파일들을 검색하려면 어떤식으로 쿼리를 짜야하나요????
smName = it.find({'participantIdentities.summonerName' : '데프트'})
이런식으로 짜니까
IOudata limit 이런 에러가 떠서 안되구요.
smName = it.find({'participantIdentities.0.summonerName' : '데프트'})
로 짤 경우에는
participantIdentities에 10개의 칸이 있는데 그 중에 0번째 칸에 소환사 이름이 데프트인 경우만 나오는 거 같아요.
이런 경우에는 for문을 써서
0부터 9까지 반복문써야 하는건가요???
또 이런 경우에
smName = it.find({'participantIdentities.0.summonerName' : '데프트'}, { 'summonerName' : 1 } )
이거나
smName = it.find({'participantIdentities.0.summonerName' : '데프트'}, { 'participantIdentities.0.summonerName' : '데프트'summonerName' : 1 } )
이런식으로 하면 오류가 뜨던데
'participantIdentities' : {} {} {}{]
이런식으로 출력 되버리던데.....
저 쿼리를 실행했을 때 소환사 이름이 데프트만 나오게 하려면
뒤쪽 projection?부분을 어떻게 해줘야 하나요??
혼자 독학하려고 하는데 너무어려운거 같아요....
답변 1
0
summonerName : 데프트
가
'participantIdentities.0이든
'participantIdentities.1이든
'participantIdentities.9에 있든간에
다찾아올 수 잇는 방법이
반복문말곤 없나요?