如何计算符合给定条件的子文档的平均值之和?

2021-09-27 06:55:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的文档结构如下:

[
    {
        series_id: 0,
        books: [
            {
                book_id: 0,
                scores: [
                    {
                        critic_id: 0,
                        score : 7.5
                    },
                    {
                        critic_id: 1,
                        score : 8.5
                    },
                    {
                        critic_id: 2,
                        score : 2.5
                    }
                ]
            },
            {
                book_id: 1,
                scores: [
                    {
                        critic_id: 0,
                        score : 5.5
                    },
                    {
                        critic_id: 1,
                        score : 7.5
                    },
                    {
                        critic_id: 2,
                        score : 9.5
                    }
                ]
            }
        ]
    },
    ...
]

现在,我想找到一个系列,在给定评论家ID列表的情况下,每本书的平均得分总和最高(最好是有序的)。你知道吗

所以,举个例子,我想找出评论家得分最高的系列[0,2]。这将返回:

[
    {
        series_id: 0,
        score: 12.5 
    },
    ...
]

或者只是序列ID的有序列表:

[ 0, ... ]

因为评论家0和2的平均值是5,评论家0和2的平均值是7.5。加起来是12.5

现在我被困在:

return list(db['series']).find(sort=[("series.books.scores", 1)])