[英]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 {class: Parlamentar, as: p} -Realiza-> {as:realiza}
但我不確定如何指定對我的查詢非常重要的 and 子句。
有沒有人有一些提示,所以我可以朝着正確的方向前進? 提前致謝!
編輯 1
我已經設法使用下面的查詢:
SELECT EXPAND( out('RealizaTransacao').out('FornecidaPor').in('SocioDe') ) FROM Parlamentar
它幾乎可以工作,但會錯誤地返回一些關系。 看起來像我沒有綁定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
(或返回任何你需要的)
如您所見,AND 表示為多個模式的相加,用逗號分隔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.