我想要平均10000条记录但是每10个值(10000个块中的10个块)我想要平均并存储10个值的平均值,然后移到MongoDb文档中的值的下一个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制作它。
答案 0 :(得分:0)
尝试使用此聚合管道对价格进行分区并计算每个分区的平均值
将所有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 ] }