如何用 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 ] }
我想平均 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 ] }