使用OrientDB中的OUT()返回连接节点的属性而不是RID

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

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

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

鉴于“Person”节点通过“Has_Friend”Edge连接到多个“Friend”节点,我希望将实际的Friend Node属性存储在此查询返回的每个Person节点的“Friends”属性中。例如。:

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

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

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

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

orientdb sqlplus graph-databases
1个回答
0
投票

尝试使用expand()功能。它将扩展该链接指向的文档并提供该文档的所有属性。所以你的查询应该是这样的:

SELECT expand(in("Has_Friend")) AS Friend FROM Person
© www.soinside.com 2019 - 2024. All rights reserved.