使用子文档引用聚合MongoDB中的一对多关系

时间:2015-05-30 20:56:40

标签: mongodb many-to-many one-to-many aggregation-framework

考虑一个包含两个数组linesnodes的文档,每个数组包含许多子文档,并且为了清晰起见,添加了未显示的嵌套文档

{
    {"lines": [
        {
            "guid": 1
            "def": {
                "n1": 49,
                "n2": 50
            }
        },
        ...]
    },
    {"nodes": [
        {
            "guid": 49,
            "def": {
                "x": -43.9709,
                "y": 14.8688,
                "z": -121.988
            }
        },
        {
            "guid": 50,
            "def": {
                "x": -30.5955,
                "y": 29.5512,
                "z": -115.024
            }
        },
        ...]
    }
}

如何查询Mongo以返回lines的重组文档,仅从nodes中提取所需内容?

{
    {"lines": [
        {
            "guid": 1
            "def": {
                "n1": {
                    "guid": 49,
                    "def": {
                        "x": -43.9709,
                        "y": 14.8688,
                        "z": -121.988
                    }
                }
                "n2": {
                    "guid": 50,
                    "def": {
                        "x": -30.5955,
                        "y": 29.5512,
                        "z": -115.024
                    }
                }
            }
        },
        ...]
    }
}

来自对RDBMS的健康理解,以及对MongoDB的新认识。我花了很多时间用聚合框架来试图实现这个目标,但没有运气。我有什么简单的遗失吗?

我希望备用数据模型可能更合适。毫无疑问,上述内容将开始与相关用例的16 MB BSON文档限制相冲突。

0 个答案:

没有答案