python - mongodb中的嵌套条目,仅在子字段的最大值上求和和平均值
问题描述
我有一个包含文档的数据库,即:
{ id: "first_document", document: [
{page: 1, content: "text"},
{page: 2, content: "text"},
{page: 3, content: "text"}]},
{ id: "second_document", document: [
{page: 1, content: "text"},
{page: 2, content: "text"}]}
等等,有多个不同大小的文档。
我需要找到所有文档的平均页数和总页数。
我用不同的管道做了几次尝试,但似乎找不到解决方案。我做的一个基本测试的例子:
[{ "$unwind": "$document" },
{ "$group":{"_id": None,"average_pages": {"$avg" : "$document.page"}}}]
但这当然是所有条目的平均值(和总和)。
如何仅对最大页码进行平均和求和?(在提供的示例中,平均值和总和仅在 3 和 2 之间)。
此示例的预期输出:
平均 = 2.5
总和 = 5
解决方案
试试这个
collection.aggregate([
{
"$unwind": {
path:"$document" ,
preserveNullAndEmptyArrays:true
}
},
{
$group:{
_id:"$_id",
totalPage:{$sum:1},
average:{$avg:"$document.page"}
}
}
])
推荐阅读
- python - 如何在数据框中处理具有持续时间的列(Pandas,Python)
- docker - Nginx 错误重定向多个虚拟主机 SSL 而不是
- grafana - Number of events within a geo-radius
- sqlite - 在循环查询sql中查找具有多个参数的子字符串
- xml - XML 导出中的 Tally 导出限制字段
- javascript - 如何使用 html 输入元素值初始化 Vue data()
- neo4j - Neo4j 最大功能
- c# - IText c# SVG to PDF未完全显示
- python - Python & gTTS 播放完成后隐藏窗口和关闭窗口
- android - 如何从广播接收器内的房间数据库中删除数据