匹配特定关系的 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表示为多个模式相加,以逗号分隔
我正在开发一个使用 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表示为多个模式相加,以逗号分隔