首页 > 解决方案 > 在 OrientDB 中使用 OUT() 返回连接节点的属性而不是 RID

问题描述

我正在尝试通过 OUT() 投影将连接节点的数据存储在 OrientDB 中选定节点的属性中。例如:

SELECT *, OUT("Has_Friend") AS Friends FROM Person

鉴于“人”节点通过“Has_Friend”边缘连接到多个“朋友”节点,我希望将实际的朋友节点属性存储在此查询返回的每个人节点的“朋友”属性中。例如:

{
    "result": [
        {
            "Name": "Joe",
            "Friends": [
                {
                 "Name": "Ben",
                 "Title": "Mr."
                },
                {
                 "Name": "Stan",
                 "Title": "Dr."
                }
            ]
        },
        {
            "Name": "Tim",
            "Friends": [
                {
                 "Name": "Terrance",
                 "Title": "Esq."
                },
                {
                 "Name": "Sarah",
                 "Title": "Dr."
                }
            ]
        }
    ]
}

但是,查询仅将每个“朋友”节点的 RID 存储在“朋友”属性中,而不是该“朋友”节点的实际数据。例如:

{
    "result": [
        {
            "Name": "Joe",
            "Friends": [
                "#228:1",
                "#227:1"
            ]
        },
        {
            "Name": "Tim",
            "Friends": [
                "#225:1",
                "#226:1"
            ]
        }
    ]
}

我已经搜索了 OrientDB 文档,但不确定如何实现这一点。我怀疑有一种方法可以将这些 Friend 节点的查询嵌套在主查询中,但我不完全确定如何做到这一点。非常感谢任何见解!

标签: orientdbsqlplusgraph-databases

解决方案


尝试使用expand()函数。它将扩展该链接指向的文档并提供该文档的所有属性。因此,您的查询应如下所示:

SELECT expand(in("Has_Friend")) AS Friend FROM Person

推荐阅读