我在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中会是什么样?
最佳答案
如果您有3.2,则也不能使用$mergeObjects
(自3.6起可用)。实际上,这两个运算符只是一种方便的投影方式,因此您可以用$project
替换它们,但缺点是必须指定所有对象属性,例如:
{
$project: {
fieldOne: "$pipelineResults.fieldOne",
fieldTwo: "$pipelineResults.fieldTwo",
//...
totalCount: "$totalCount.value"
}
}
关于javascript - MongoDB 3.2等同于$ mergeObjects阶段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51043910/