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" } |