Gruppieren von Nested Objektschlüssel in MongoDB
Frage
Ist es möglich, Gruppenergebnisse durch einen Schlüssel in einem Array von Objekten in einer Liste gefunden?
Zum Beispiel kann sagen, dass ich eine Tabelle von Umfrageantworten (survey_responses
) habe, und jeder Eintrag steht für eine einzige Antwort. Eine oder mehrere der Fragen in der Umfrage sind eine Multiple-Choice, so dass die gespeicherten Antworten ähneln könnte:
survey_responses.insert({
'name': "Joe Surveylover",
'ip': "127.0.0.1",
'favorite_songs_of_2009': [
{'rank': 1, 'points': 5, 'title': "Atlas Sound: Quick Canals"},
{'rank': 2, 'points': 4, 'title': "Here We Go Magic: Fangela"},
{'rank': 3, 'points': 3, 'title': "Girls: Hellhole Ratrace"},
{'rank': 4, 'points': 2, 'title': "Fever Ray: If I Had A Heart"},
{'rank': 5, 'points': 1, 'title': "Bear in Heaven: Lovesick Teenagers"}],
'favorite_albums_of_2009': [
# and so on
]})
Wie kann ich Gruppe durch die title
von favorite_songs_in_2009
die Gesamtzahl der Punkte für jeden Song in dem Array zu bekommen?
Lösung
Es scheint, dass die einzige Möglichkeit ist, dies in Ihrem eigenen Python-Code zu tun:
song_points = {}
for response in survey_responses.find():
for song in response['favorite_songs_of_2009']:
title = song['title']
song_points[title] = song_points.get(title, 0) + song['points']
Sie werden Ihre Ergebnisse in der song_points
Variable erhalten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow