Mongodb 如何在$facet中返回输入文档

Mongodb 如何在$facet中返回输入文档,mongodb,aggregation-framework,facet,Mongodb,Aggregation Framework,Facet,我正在寻找一种智能方法,以$facet聚合方式返回输入文档。大概是这样的: db.collection.aggregate([ { <pipeline stage 1> }, { <pipeline stage 2> }, { $facet: { outputField1: [ output of <pipeline stage 2> ], outputField2

我正在寻找一种智能方法,以
$facet
聚合方式返回输入文档。大概是这样的:

db.collection.aggregate([
   { <pipeline stage 1> },
   { <pipeline stage 2> },
   {
      $facet:
         {
            outputField1: [ output of <pipeline stage 2> ],
            outputField2: [ { <pipeline stage 3> } ]
         }
   }
])

您也可以执行此操作
{$match:{}
以原样返回当前文档:

{
    $facet:
    {
        outputField1: [{ $match: {} }],
        outputField2: [ { <pipeline stage 3> } ] } } }]
    }
}
{
$facet:
{
outputField1:[{$match:{}}],
outputField2:[{}]}}]
}
}

不需要在
outputField1
outputField2
中执行两次
{}
。关于你的第二个选项,我不确定它到底发生了什么/是否优化了-除非我们看到你的查询:-)你可以使用我的答案,就像基本的
.find()
一样,没有任何过滤器,可以返回所有通过的文档。是的,这就是为什么我称它为“解决方案”是的,
{$match:{}
也类似于
null
操作。事实上,我希望使用一个全局常量—也许它不存在。@WernfriedDomscheit:这是我唯一能想到的,因为如果你想使用任何运算符,那么它应该在像“$project”这样的阶段中使用,该阶段将创建一个对象数组outputField1。或者您可以使用group+push&root来投影一个字段,但这也会在outputField1数组中创建一个对象!!
{
    $facet:
    {
        outputField1: [{ $match: {} }],
        outputField2: [ { <pipeline stage 3> } ] } } }]
    }
}