OrientDB - 让变量在哪里

OrientDB - LET variable in where

我有一个与此非常相似的查询:

SELECT FROM Post 
LET 
$category = (SELECT EXPAND(out('PartOf')) FROM $current),
$poster = (SELECT EXPAND(in('Posted')) FROM $current) 
WHERE 
$poster <> #18:1
AND $poster IN (SELECT EXPAND(out('IsUser')) FROM (SELECT EXPAND(out('Related')) FROM #18:1) WHERE out('RelatedIn') IN ($category))
LIMIT 10000

还有这样的图表:

CREATE CLASS Post EXTENDS V;
CREATE CLASS Category EXTENDS V;
CREATE CLASS User EXTENDS V;
CREATE CLASS UserRelated EXTENDS V;
CREATE CLASS PartOf EXTENDS E;
CREATE CLASS IsUser EXTENDS E;
CREATE CLASS Posted EXTENDS E;
CREATE CLASS Related EXTENDS E;
CREATE CLASS RelatedIn EXTENDS E;

PartOf relates Post and Cateogry
IsUser relates UserRelated and User
Posted relates User and Post
Related relates User and UserRelated
RelatedIn relates UserRelated and Category

UserRelated is an hyper-edge

我正在寻找的是 posts,来自与另一个用户 (#18:1) 相关的用户,其中用户之间的关系与 [= 的类别属于同一类别28=]此时查询正在遍历。

AND 之后的 where 子句不起作用。如果我删除它,查询会给出相同的结果。

另一方面,如果我用特定的@rid 更改该子句中的 $category,查询将完美运行...但我需要多个特定类别。

那么,这个查询有什么问题?

(我希望这个解释足够清楚)

谢谢

$category 似乎无法从 where 访问。我真的不知道为什么。 但我用另一个变量解决了它:

SELECT FROM Post 
LET 
$category = (SELECT EXPAND(out('PartOf')) FROM $current),
$poster = (SELECT EXPAND(in('Posted')) FROM $current),
$relatedUser = (SELECT EXPAND(out('IsUser')) FROM (SELECT EXPAND(out('Related')) FROM #18:1) WHERE out('RelatedIn') IN ($parent.category))
WHERE 
$poster <> #18:1
AND $poster IN ($relatedUser)
LIMIT 10000

密钥在子查询中使用了 $parent.category。我不太清楚父级中声明的变量应该在任何子查询中与 $parent.variable 一起使用。

我希望这对以后的人有所帮助!