【发布时间】:2016-12-20 14:40:16
【问题描述】:
我有一个来自管道的输出文档,例如:{upvotes : 1, downvotes : 5}。我只是想把它传递给管道的下一部分。我做了这样的事情:
{
$group :{
_id : "$_id",
upvotes : {$max : "$upvotes"},
downvotes : {$max : "$downvotes"},
average : {$avg : "$statements.result"},
count : {$max : "$count"}
}
}
我不想使用最大值我不想要任何东西的最大值。我只想要字段和值:{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 的原因。
【问题讨论】:
-
在这里看不到明确的问题?
-
哪部分不清楚?
-
我仍在尝试解析代码块之后的语言。有点伤我的头。您不只是在寻找
$group.upvotes或其他字段之一,因为它没有最大值,而是其他对象(一个带有赞成票、反对票的对象)? -
使用 $group 时,您可以创建一个字段,我希望该字段的值是管道先前输出的字段值。在我的情况下,这两个字段具有相同的名称。
{upvotes : 1, downvotes : 5}是管道上一步的输出。我希望{upvotes : 1, downvotes : 5}出现在下一个输出中。一个技巧是使用max。还有什么办法? -
出于某种原因,我认为我需要一个累加器运算符。这就是我使用 max 的原因。 docs.mongodb.com/manual/reference/operator/aggregation/group/…
标签: javascript node.js mongodb mongoose aggregation-framework