OrientDB:select edge where out=(select ??) 不起作用

OrientDB: select edge where out=(select ??) does not work

我有问题。我认为这应该可行,否则其他人会 运行 解决这个问题。

以下命令完美运行:

// suppose my record id is #10:0

select from MyEdgeType where out=#10:0

这行得通。

select from MyNodeType where name="this"
> returns obj with @rid = #10:0

以下无效:

select from MyEdgeType where out=(select from MyNodeType where name="this")
select from MyEdgeType where out=(select @rid from (select from MyNodeType where name="this")
select from MyEdgeType let $rec = (select fcom MyNodeType...) where out=$rec.rid


... etc. 

没有任何效果。没有什么。我如何从边缘 select 这样我就不必知道我想提前获取的边缘附带的记录 ID?

您正在比较结果集上的单个字段(就像比较字符串和数组),请尝试这样的操作:

select from MyEdgeType where out IN (select from MyNodeType where name="this")

我成功了。

由于我的节点是唯一的(这是一个约束),我在过滤期间使用唯一的 属性 来标识它们,而不是子查询中的记录 ID:

 select from MyEdgeType where out.unique_identifier=...

成功了。