Mongodb 将$facet输出投影到对象
我创建了一个以facet操作结束的聚合,产生了以下结果:Mongodb 将$facet输出投影到对象,mongodb,Mongodb,我创建了一个以facet操作结束的聚合,产生了以下结果: [ { "all": [ { "all": 6948 } ], "none": [ { "none": 207 } ] } ] 我需要的是如下输出: { all: 6948, none
[
{
"all": [
{
"all": 6948
}
],
"none": [
{
"none": 207
}
]
}
]
我需要的是如下输出:
{
all: 6948,
none: 207
}
我尝试了一些$projections,但无法摆脱结果内外的数组。$project可以这样做,还是我应该尝试其他方法?尝试以下方法:
{
$project: {
all: {
$arrayElemAt: [
"$all",
0
]
},
none: {
$arrayElemAt: [
"$none",
0
]
}
}
},
{
$project: {
all: "$all.all",
none: "$none.none"
}
}
使用facet之后的项目阶段作为
{$project:{
all:{$arrayElemAt:["$all.all",0]},
none:{$arrayElemAt:["$none.none",0]},
}}
试试这个代码
db.collection.aggregate([
{
$unwind: "$all"
},
{
$unwind: "$none"
},
{
$project: {
_id: 0,
all: "$all.all",
none: "$none.none"
}
}
])
非常接近,但我仍然无法摆脱最外层的阵列。使用您的解决方案,我得到了一个包含单个对象的数组。在js或您的语言中,只需返回数组[0]position是的,这就是我要做的。