如何用 MongoDB 在 Python 中取 10 个块等进行平均?

How to average with MongoDB taking 10 chunks and so on in Python?

我想平均 10000 条记录,但每 10 个值(10000 个块中的 10 个块)我想平均并存储这 10 个值的平均值,然后移动到 [=18= 中文档中值的下一个 10 ],

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }

在以下文件中,我想对每 2 个文件的价格取平均值,例如 10+20/2 = 15 和 5+5/2= 5。所以我想知道如何在 Python .

试试这个聚合管道来划分价格并计算每个分区的平均值,

将所有 2 替换为 10,以除以 10

db.avgs.aggregate([
    {$sort : {_id : 1}},
    {$group : {_id : null, prices : {$push : "$price"}}},
    {$project : { _id : 0, average : {
        $map : {
            input : {$range : [0, {$ceil : {$divide : [{$size : "$prices"},2]}}]},
            as : "r",
            in : {$avg : {$slice : ["$prices", {$multiply : ["$$r", 2]}, 2]}}
        }
    }}}
]).pretty()

结果

{ "average" : [ 15, 5, 10 ] }