将$facet输出投影到对象



我创建了一个以分面操作结尾的聚合,产生了以下结果:

[
{
"all": [
{
"all": 6948
}
],
"none": [
{
"none": 207
}
]
}
]

我需要的是如下所示的输出:

{
all: 6948,
none: 207
}

我尝试了一些$projections但无法摆脱结果外部和内部的数组。这可以通过$project还是我应该尝试其他方法?

试试这段代码

db.collection.aggregate([
{
$unwind: "$all"
},
{
$unwind: "$none"
},
{
$project: {
_id: 0,
all: "$all.all",
none: "$none.none"
}
}
])

入住蒙戈游乐场

在分面之后使用项目阶段作为

{$project:{
all:{$arrayElemAt:["$all.all",0]},
none:{$arrayElemAt:["$none.none",0]},
}}

试试这个:

{
$project: {
all: {
$arrayElemAt: [
"$all",
0
]
},
none: {
$arrayElemAt: [
"$none",
0
]
}
}
},
{
$project: {
all: "$all.all",
none: "$none.none"
}
}

最新更新