0

我有一个顶点“A”连接到顶点“B”和“C”。

我想用 B 和 C 的记录 ID 的附加列表查询 A。

属性外观示例:

A:
{
   "@rid": "#1:0",
   "property": "ValueForA"
}

B:
{
   "@rid": "#2:0",
   "property": "ValueForB"
}

C:
{
   "@rid": "#2:1",
   "property": "ValueForC"
}

我想要一个查询 A 给我:

{
    "@rid": "#1:0",
    "property": "ValueForA",
    "connected": ["#2:0", "#2:1"]
}

我宁愿只用预测就能做到这一点。它适用于 B 和 C 中的任何自定义字段,但对于 @rid 我得到一个链接(为什么会出现这种不一致?)。

我试过了:

SELECT @rid, *, out().@rid as connected FROM #1:0

这正是我想要的,但列表中的摆脱是指向记录的链接,而不仅仅是摆脱。

SELECT @rid, *, out().@rid.asString() as connected FROM #1:0

这使:

{
    "@rid": "#1:0",
    "property": "ValueForA",
    "connected": "[#2:0, #2:1]"
}

连接的属性只是一个字符串。

@rid 和其他属性的这种不一致可能(希望如此?)有一个原因。正如我所写的,如果@rid 是“id”,那么第一个示例可以正常工作。无论如何,我想知道一个简单的方法来做到这一点,因为我觉得它应该很容易做到。

更新

在上面的示例中添加 id 作为属性示例是一种误导,因为它可能以某种方式暗示它是唯一的(尽管我从未说过),所以我将其删除。我添加它们只是为了将 3 条记录分开。但是,record-id 是用作分隔上述顶点的唯一 id,因此无法使用记录的任何属性。为了进一步澄清,记录可以具有任意属性。不仅是上面给出的示例。

同样,第一个问题是是否可以使用投影?

进一步的评论:我觉得很奇怪,如果我为每条记录创建一个与@rid 完全相同的记录 ID 的属性“rid”,我可以轻松地做到这一点。为什么我必须这样做(我不会这样做)以使其易于使用。

更新2

我还希望能够一次定位多个顶点并为每个顶点附加连接。对于许多属性(但不是@rid),我已经使用投影进行了此操作。

4

1 回答 1

0

查询像链接一样返回@rid 的事实是很正常的,这是一种可能的方法。可能是这个:

select id, property, $a from #21:0
let $a = (select out() from #21:0 where $parent.current.id = id)

这是输出:

在此处输入图像描述

希望能帮助到你。

问候

于 2016-11-21T15:56:43.650 回答