我正在使用聚合管道。
{
$project: {
results: {
$reduce: {
input: <array>, // We have $$ROOT, but I need previous pipeline result
initialValue: <expression>,
in: <expression>
}
}
}
这将得到以下结果:
{“_ id”:ObjectId(“512bc95fe835e68f199c8686”),“author”:“dave”, “得分”:80,“观点”:100}
{“_ id”: ObjectId(“512bc962e835e68f199c8687”),“作者”:“dave”,“得分”:85, “观点”:521}
我想将此管道结果(在这种情况下是一个数组)减少到一个对象中。我知道,我们可以通过项目来减少
第二个管道阶段:
brew install chromedriver
我们如何将以前的管道结果作为数组引用到此管道阶段?
答案 0 :(得分:0)
你的意思是$group
db.collection.aggregate([
{ "$match": { ... } }, // your query conditions
{ "$group": {
"_id": "$author",
"score": { "$sum": "$score" },
"views": { "$sum": "$views" }
}}
])
这会“放置”放置在"author"
中的_id
字段并使用“累加器”返回其他属性,例如$sum
{ "_id" : "dave", "score" : 165, "views" : 621 }
有关详细信息,我建议查看显示大量示例的官方文档的Aggregation部分,以及SQL to Aggregation Mapping Chart,如果您对SQL数据库有一定的了解。
答案 1 :(得分:0)
您必须使用CURRENT
{
$project: {
results: {
$reduce: {
input: $$CURRENT,
initialValue: <expression>,
in: <expression>
}
}
}