OrientDB SQL:包含来自连接顶点的rids

时间:2016-11-21 15:42:11

标签: orientdb orient-sql

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

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

属性的外观示例:

CaptureSession

我想要一个给我的A查询:

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

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

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

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

我试过了:

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

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

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

给出了:

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

其中connected属性只是一个字符串。

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

更新

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

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

进一步的评论:我觉得很奇怪,如果我做了一个房产,我可以很容易地做到这一点"摆脱"为每条记录保存与@rid完全相同的记录ID。为什么我必须这样做(我不会这样做),以便使它易于使用。

UPDATE2

我还希望能够同时定位多个顶点并为每个顶点附加连接。我已经使用投影为许多属性做了这个(但不是@rid)。

1 个答案:

答案 0 :(得分:0)

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

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

这是输出:

enter image description here

希望它有所帮助。

此致