嵌套数组上的MongoDB投影

时间:2017-03-01 20:07:55

标签: mongodb

我的文件如下:

{
    "_id" : ObjectId("58b714f753e4a2105c002416"),
    "routes" : [ 
        {
            "legs" : [ 
                {
                    "duration" : {
                        "text" : "6 mins",
                        "value" : 348
                    },
                    "traffic_speed_entry" : [],
                }
            ],
            "warnings" : [],
        }
    ],
    "time" : "01/03/2017 18:37:43"
}

如何投影具有时间和持续时间的表格(每个数组元素一行)?

我能得到的最好的是:

db.getCollection('testcoll').find({}, {time:1, routes: 1})

1 个答案:

答案 0 :(得分:1)

您需要使用聚合来展平数组并投影值。

db.getCollection('testcoll').aggregate({
    $unwind: "$routes"
}, {
    $unwind: "$routes.legs"
}, {
    $project: {
        time: 1,
        duration: "$routes.legs.duration",
        _id: 0
    }
})