匹配特定关系的 OrientDB 图查询

OrientDB graph query that match specific relationship

我正在开发一个使用 OrientDB 作为数据库的应用程序。数据库已经填满了,现在需要做一些查询来获取具体的信息。

我有 3 个 类 和 3 个边需要关注。我需要做的是查询数据库以查看是否存在某些特定关系。关系是这样的:

ParlamentarVertex --Realiza> TransacaoVertex --FornecidaPor> EmpresaFornecedoraVertex AND ParlamentarVertex --SocioDe> EmpresaFornecedoraVertex

带顶点的名字当然是顶点,箭头是两个顶点之间的边

我试过这样做:

SELECT TxNomeParlamentar, SgPartido, SgUF FROM Parlamentar where ...

SELECT EXPAND( out('RealizaTransacao').out('FornecidaPor') ) FROM Parlamentar

但是我不知道where子句后的关系如何指定。

我也尝试过使用 match

MATCH {class: Parlamentar, as: p}  -Realiza-> {as:realiza}

但我不确定如何指定对我的查询非常重要的 and 子句。

有没有人给我一些提示,这样我就可以朝着正确的方向前进? 提前致谢!

编辑 1

我已设法使用以下查询:

SELECT EXPAND( out('RealizaTransacao').out('FornecidaPor').in('SocioDe') ) FROM Parlamentar

它几乎可以工作,但是 return 有些关系不正确。貌似我没有绑定Pk和FK的join

这里最简单的方法是使用 MATCH,如下所示:

MATCH 
  {class:ParlamentarVertex, as:p} -Realiza-> {class:TransacaoVertex, as:t} 
       -FornecidaPor-> {class:EmpresaFornecedoraVertex, as:e},
  {as:p} -SocioDe-> {as:e}
RETURN p, p.TxNomeParlamentar, p.SgPartido, p.SgUF, t, e 

(或 RETURN 任何你需要的)

如您所见,AND表示为多个模式相加,以逗号分隔