在MongoDB中仅选择子文档的嵌套字段

问题描述 投票:0回答:1

所以我在MongoDB集合中有一个文档如下所示:

{
    "_id" : ObjectId("5a9d476d0361662cb469eb92"),
    "layout_id" : 123,
    "entries" : {
        "sim_b" : {
            "id" : "",
            "resolution" : "",
            "description" : "",
            "data" : {
                "heatmap" : [ ],
                "seats" : [ ]
            }
        },
        "sim_c" : {
            "id" : "",
            "resolution" : "",
            "description" : "",
            "data" : {
                "heatmap" : [ ],
                "seats" : [ ]
            }
        }
    }
}

我想只选择heatmap,这样文档看起来像这样:

{
    "_id" : ObjectId("5a9d476d0361662cb469eb92"),
    "entries" : {
        "sim_b" : {
            "data" : {
                "heatmap" : [ ]
            }
        },
        "sim_c" : {
            "data" : {
                "heatmap" : [ ]
            }
        }
    }
}

有没有办法显示比db.collection.find({ 'layout_id': 123}, { 'entries.sim_b.data.heatmap': 1, 'entries.sim_c.data.heatmap': 1})更好的查询?当entries字典下有更多子文档时,会派上用场。

mongodb
1个回答
0
投票

如果投影对您来说不够,并且您希望将所有热图都放在某种聚合数组中,则可能必须使用聚合框架和$ push运算符(https://docs.mongodb.com/manual/reference/operator/aggregation/push/)或$ addToSet运算符(https://docs.mongodb.com/manual/reference/operator/aggregation/addToSet/),具体取决于是你想要实现的结果。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.