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()

已提問 6 個月前檢視次數 199 次
1 個回答
1
已接受的答案

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
已回答 6 個月前
profile picture
專家
已審閱 1 個月前
  • Thankyou for response

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南