簡體   English   中英

匹配特定關系的 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 {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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM