Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 将$facet输出投影到对象_Mongodb - Fatal编程技术网

Mongodb 将$facet输出投影到对象

Mongodb 将$facet输出投影到对象,mongodb,Mongodb,我创建了一个以facet操作结束的聚合,产生了以下结果: [ { "all": [ { "all": 6948 } ], "none": [ { "none": 207 } ] } ] 我需要的是如下输出: { all: 6948, none

我创建了一个以facet操作结束的聚合,产生了以下结果:

[
    {
        "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是的,这就是我要做的。