繁体   English   中英

OrientDB SQL:包含连接顶点的rids

[英]OrientDB SQL: Include rids from connected vertices

我有一个顶点“ 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]"
}

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

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

更新

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

再次,第一个问题是是否可以使用投影?

进一步的评论:如果我将每个记录的属性“ rid”保存为与@rid完全相同的记录ID,我会很容易做到这一点,这真的很奇怪。 我为什么要这样做(我不会那样做)以便使其易于使用。

UPDATE2

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

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

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

这是输出:

在此处输入图片说明

希望能帮助到你。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM