2017-07-07 3 views
0

ich eine Abfrage in Gremlin haben, DataStax Studio verwenden, die wie folgt aussieht:Gremlin .match()

g.V().has('vertexLabel', 'vertexProperty1', '12345').match(
    __.as('d').in('edgeLabel1').values('property2').as('NAME1'), 
    __.as('d').in('edgeLabel2').values('property3').as('NAME2'), 
    __.as('d').in('edgeLabel1').out('edgeLabel3').values('property4').as('NAME3') 
    ).select('NAME1', 'NAME2', 'NAME3') 

Dies funktioniert nur gut, wenn alle Einheiten vorhanden ist, aber wenn einer von ihnen ist nicht auf dem Graphen, Es werden keine Ergebnisse gefunden, obwohl ich weiß, dass es solche gibt. Wie kann ich eine .or-Abfrage erstellen, die die Werte findet, wenn sie vorhanden sind. Angenommen, property4 wurde am Ende von edgeLabel3 nicht gefunden. Wie kann meine Abfrage die anderen beiden Ergebnisse (property2 und property3) liefern? Ich habe versucht, Fragen zu stellen, aber ich hatte kein Glück.

Antwort

1

Haben Sie versucht, mit einem union Schritt in Gremlin? Es sollte ungefähr so ​​aussehen:

g.V('book:882178048:25').has('vertexLabel', 'vertexProperty1', '12345') 
.union(
    as('d').in('edgeLabel1').values('property2').store('NAME1'), 
    as('d').in('edgeLabel2').values('property3').store('NAME2'), 
    as('d').in('edgeLabel1').out('edgeLabel3').values('property4').store('NAME3') 
).cap('NAME1', 'NAME2', 'NAME3') 
+0

Danke für die Beantwortung. Ich habe eine Union benutzt, aber ich habe sie etwas verändert. – user5294007

Verwandte Themen