MongoDB 3.2等同于$ mergeObjects阶段

时间:2018-06-26 13:18:17

标签: javascript mongodb aggregation-framework

我在MongoDB视图中使用$ facet运算符对同一数据运行两个管道。在最后阶段,我需要将这两个合并在一起。如果我们运行的是Mongo 3.6,我将使用$ mergeObjects运算符执行此操作。但是,我们正在运行版本3.2,其中$ mergeObjects不可用。所以我试图弄清楚3.2的等效值是什么:

{
  $replaceRoot: {
    newRoot: {
      $mergeObjects: ["$pipelineResults", {
        totalCount: "$totalCount.value"
      }]
    }
  }
}

我已经尝试过使用$ project,就像这样:

{
  newRoot: {
    $project: {
      "$pipelineResults": 1,
      totalCount: {
        "$totalCount.value": 1
      }
    }
  }
}

...但这不起作用。也许我需要$ group和$ project的组合?在3.2中会是什么样?

1 个答案:

答案 0 :(得分:1)

如果您有3.2,则也不能使用class MyClass1: myname = "Class variable" def __init__(self): self.myname = "my attribute" a = MyClass1() print(a.myname) (自3.4起可用)。实际上,这两个运算符只是一种方便的投影方式,因此您可以将它们替换为$mergeObjects,但缺点是必须指定所有对象属性,例如:

$project