2017-10-23 3 views
1

Ich entwickle eine Anwendung mit OrientDB als Datenbank. Die Datenbank ist bereits gefüllt, und jetzt muss ich einige Abfragen durchführen, um spezifische Informationen zu erhalten.OrientDB Graph Abfrage, die spezifische Beziehung

Ich habe 3 Klassen und 3 Kanten betroffen sein. Was ich tun muss, ist die Datenbank abzufragen, um festzustellen, ob eine bestimmte Beziehung besteht. Die Beziehung ist wie folgt:

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

Die Namen mit einem Scheitelpunkt in ihr sind ein Scheitelpunkt natürlich sind und die Pfeile die Ränder zwischen den beiden Scheiteln.

Ich habe versucht, dies zu tun:

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

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

Aber ich weiß nicht, wie die Beziehungen nach der Where-Klausel angeben.

Ich habe auch Spiel

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

zu verwenden versucht, aber ich bin nicht sicher, wie die Klausel und angeben, die für meine Frage wirklich wichtig ist.

Hat jemand einen Tipp, damit ich in die richtige Richtung gehen kann? Vielen Dank im Voraus!

EDIT 1

Ich habe es geschafft, unter die Abfrage zu verwenden:

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

Es funktioniert fast, aber einige Beziehungen falsch zurück. Es sieht wie ein Join aus, dass ich den Pk und FK nicht gebunden habe.

Antwort

1

Die einfachste Sache hier ist ein Match wie folgt zu verwenden:

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 

(oder RETURN, was Sie brauchen)

Wie Sie sehen können, das und als die Zugabe von mehreren Mustern dargestellt, getrennt durch ein Komma

+0

Vielen Dank für Ihre Antwort! Ich werde diese Lösung versuchen und zu dir zurückkommen. –

+0

Es funktioniert, Vielen Dank! –