Ich habe eine Traversal wie folgt:Die bereitgestellten Start auf einen Wert Karte nicht
g.V().hasLabel("demoUser")
.as("demoUser","socialProfile","followCount","requestCount")
.select("demoUser","socialProfile","followCount","postCount")
.by(__.valueMap())
.by(__.out("socialProfileOf").valueMap())
.by(__.in("followRequest").hasId(currentUserId).count())
.by(__.outE("postAuthorOf").count())
Ich versuche, einen Benutzer Vertex, ihre verknüpften sozialen Profil Kontrollpunkt zu wählen, und einige andere zählt. Das Problem ist, dass alle Benutzer möglicherweise keine socialProfile
Kante haben. Wenn dies der Fall ist, schlägt die Traversal mit dem folgenden Fehler:
The provided start does not map to a value: v[8280]->[TitanVertexStep(OUT,[socialProfileOf],vertex), PropertyMapStep(value)]
habe ich this thread vom Gremlin Team. Ich habe versucht, die Logik innerhalb von .by()
mit einem coalesce()
, und auch ein .fold()
an das Ende der Anweisung ohne Glück hinzuzufügen.
Wie mache ich diese Auswahl optional? Ich möchte eine socialProfile
auswählen, wenn eine existiert, aber immer die demoUser
auswählen.
'coalesce' hat perfekt funktioniert. – Fook