我在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中会是什么样?
答案 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