在mongodb中提取子文档

时间:2015-02-12 18:57:34

标签: mongodb aggregation-framework

我有一个聚合查询结果的集合,并且包含具有以下字段结构的文档:

{
   _id : { data1, data2 },
   data3
}

我想把它转换为" flat"像这样的结构:

{
   data1,
   data2,
   data3
}

实现这一目标的最佳方法是什么?目前,我想到了另一个聚合查询,但有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

_id字段是不可变的,因此您无法更改它。但是,您可以通过在聚合查询的末尾添加以下_id子句来显示$project中的子文档中的值。

{ $project: { "data1" : "$_id.data1", "data2": "$_id.data2", "data3": 1 } }

所以你的最终聚合查询看起来像这样:

db.collection.aggregate([ ..., 
                          { "$project": { "data1": "$_id.data1",
                                          "data2": "$_id.data2",
                                          "data3": 1 }
                          }
                        ]);

这将为您提供您正在寻找的扁平结构。