通过MongoDB中的聚合框架将嵌入式对象作为文档检索

Retrieving an embedded object as a document via the aggregation framework in MongoDB

如果我有一个文档,其中包含一个嵌入式对象作为其字段之一的值,如下所示:

1
{ _id: ObjectId("..."), embeddedObject: { k1:"val1", k2:"val2", k3:"val3" } }

然后如何使用聚合框架(管道运算符)将嵌入式对象本身作为输出文档进行检索?还是不可能?

也就是说,我最终需要得到以下结果:

1
{ k1:"val1", k2:"val2", k3:"val3" }

尽管运算符$ project,$ match,$ unwind,$ group解决了紧密的问题,但似乎没有一个能够准确地满足我的上述要求。


这可以使用聚合管道运算符$ replaceRoot

之一来实现

1
2
3
4
5
  db.[collection].aggregate( [
       {
         $replaceRoot: { newRoot:"$embeddedObject" }
       }
    ] );

这将导致以下输出:

1
{ k1:"val1", k2:"val2", k3:"val3" }