Conversion of query from cypher to gremlin

0

I have cypher query: MATCH p=(c:Customer)-[:HAS_LOCATION|HAS_EMAIL|HAS_PHONE*1..25]-(n) return p

Now I want same query in gremlin .I have written this for gremlin is it right or can we write more optimized query

g.V().hasLabel('Customer').as('c') .repeat( both('HAS_LOCATION', 'HAS_EMAIL', 'HAS_PHONE') .simplePath() ) .times(1, 25) .path() .from('c') .toList()

demandé il y a 6 mois199 vues
1 réponse
1
Réponse acceptée

A similar query in Gremlin would be:

g.V().hasLabel('Customer').
    repeat(bothE('HAS_LOCATION', 'HAS_EMAIL', 'HAS_PHONE') .otherV().simplePath()).
    emit().
    times(25).
    path().by(elementMap())

One thing to realize is that openCypher and Gremlin differ in how they build paths. By default, openCypher will only cross an edge once. With Gremlin and using simplePath(), a vertex/node is only traversed once.

This could also be an expensive query to execute if there are many nodes with a label of Customer. I would suggest that if using Neptune that you look to constrain the starting point for this query to one, or a subset, of starting nodes.

profile pictureAWS
répondu il y a 6 mois
profile picture
EXPERT
vérifié il y a un mois
  • Thankyou for response

Vous n'êtes pas connecté. Se connecter pour publier une réponse.

Une bonne réponse répond clairement à la question, contient des commentaires constructifs et encourage le développement professionnel de la personne qui pose la question.

Instructions pour répondre aux questions

Contenus pertinents