在mongodb中提取子文档
我有一个集合,它是聚合查询的结果,并且有具有以下字段结构的文档:在mongodb中提取子文档,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有一个集合,它是聚合查询的结果,并且有具有以下字段结构的文档: { _id : { data1, data2 }, data3 } 我想把它转换成这样的平面结构: { data1, data2, data3 } db.collection.aggregate([ ..., { "$project": { "data1": "$_id.data1",
{
_id : { data1, data2 },
data3
}
我想把它转换成这样的平面结构:
{
data1,
data2,
data3
}
db.collection.aggregate([ ...,
{ "$project": { "data1": "$_id.data1",
"data2": "$_id.data2",
"data3": 1 }
}
]);
实现这一目标的最佳方式是什么?目前,我想到了另一个聚合查询,但是有没有更简单的方法?id字段是不可变的,因此您将无法更改它。但是,您可以通过在聚合查询的末尾添加以下$project子句来显示您在_id中拥有的子文档中的值
{ $project: { "data1" : "$_id.data1", "data2": "$_id.data2", "data3": 1 } }
因此,最终的聚合查询如下所示:
{
data1,
data2,
data3
}
db.collection.aggregate([ ...,
{ "$project": { "data1": "$_id.data1",
"data2": "$_id.data2",
"data3": 1 }
}
]);
这将为您提供所需的平面结构。在任何情况下,生成的文档都必须具有_id。您不能从原始聚合查询中$unwind结果吗?您是否能够将数据转换为您正在寻找的平面结构?