gpt4 book ai didi

javascript - 聚合时传递字段和值

转载 作者:行者123 更新时间:2023-11-28 05:40:52 25 4
gpt4 key购买 nike

我有一个来自管道的输出文档,如下所示:{upvotes : 1, downvotes : 5}。我只是想将其传递到管道的下一部分。我做了这样的事情:

{
$group :{
_id : "$_id",
upvotes : {$max : "$upvotes"},
downvotes : {$max : "$downvotes"},
average : {$avg : "$statements.result"},
count : {$max : "$count"}
}
}

我不想使用 max 我不想要任何东西的最大值。我只想要字段和值:{upvotes : 1, downvotes : 5}。可以说它们不是数字。假设字段是对象,我希望输出该字段的所有对象而不是最大值。

让这个问题更清楚:如何在不使用 max 的情况下获取字段和值?

输出:

[ { _id: 57aea6791016c0b023a71e9d,
upvotes: 3,
downvotes: 1,
average: 7.857142857142857,
count: 5 },
{ _id: 57aed883139c1e702beb471e,
upvotes: 0,
downvotes: 1,
average: 7,
count: 1 } ]

输出很好,但我不想使用 max 来获取它。

出于某种原因,我认为我需要一个 Accumulator Operator 。这就是我使用 max 的原因。

最佳答案

由于您是按“$_id”分组,因此实际上根本没有分组。您的结果将与您的初始数据集 1:1 相关。为了完成您所要求的任务,在不使用像 $max 这样的聚合函数的情况下传递赞成票和反对票,您只需将它们包含在小组阶段的 _id 中,这是您通过键指定小组的地方。

所以你会这样做:

{
$group :{
_id : {
"_id":"$_id",
"upvotes": "$upvotes",
"downvotes": "$downvotes"
}
average : {$avg : "$statements.result"},
count : {$max : "$count"}
}
}

但是,您最终仍将得到与原始数据 1:1 的相关性。

关于javascript - 聚合时传递字段和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com