在MongoDB中按嵌套对象键分组

0 投票
1 回答
786 浏览
提问于 2025-04-15 16:26

有没有办法根据一个数组中对象的某个键来对结果进行分组呢?

举个例子,假设我有一个调查反馈的表格(survey_responses),每一条记录代表一个人的反馈。在这个调查中,有一个或多个问题是选择题,所以存储的答案可能像这样:

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
    ]})

我该如何根据favorite_songs_in_2009title来分组,以便计算每首歌的总分呢?

1 个回答

0

看起来你只能在自己的Python代码里这样做:

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']

你会在song_points这个变量里得到你的结果。

撰写回答