如何将多个构面结果合并到具有一个属性的对象列表中

情况:

在我的mongodb聚合管道中,我有一个$facet阶段,它会产生多个 输出字段,例如:pipe_1pipe_2

结果具有以下形式:

{
  pipe_1: [{"key": "a"},{"key": "b"},{"key": "c"},{"key": "d"}],pipe_2: [{"key": "a"},{"key": "B"},{"key": "d"}]
}

想要的结果

我的问题是,现在如何从中获得以下结果:

[
  {"key": "a"},{"key": "d"}
]

我只想要两个列表中都没有重复的键 结果。最好我想在没有任何缓慢小组讨论的情况下给出答案,并且 它必须适用于两个以上的列表。

谢谢。

buyitgo 回答:如何将多个构面结果合并到具有一个属性的对象列表中

您可以使用$setIntersection运算符:

db.collection.aggregate([
    {
        $project: {
            result: {
                $setIntersection: [ "$pipe_1","$pipe_2" ]
            }
        }
    }
])

Mongo Playground

本文链接:https://www.f2er.com/3122755.html

大家都在问