mongodb中的嵌套条目,仅在子字段的最大值上求和和平均值
Posted
技术标签:
【中文标题】mongodb中的嵌套条目,仅在子字段的最大值上求和和平均值【英文标题】:Nested entry in mongodb, sum and average only over max of a subfield 【发布时间】:2019-10-02 08:13:15 【问题描述】:我有一个包含文档的数据库,即:
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
【问题讨论】:
能否也显示预期的输出 【参考方案1】:试试这个
collection.aggregate([
"$unwind":
path:"$document" ,
preserveNullAndEmptyArrays:true
,
$group:
_id:"$_id",
totalPage:$sum:1,
average:$avg:"$document.page"
])
【讨论】:
以上是关于mongodb中的嵌套条目,仅在子字段的最大值上求和和平均值的主要内容,如果未能解决你的问题,请参考以下文章