用于 gremlin 遍历的 Cypher 查询
Cypher query for gremlin traversal
密码查询新手
g.V().has('Entity1','id',within(id1)).in('Entity2').
where(__.out('Entity3').where(__.out('Entity4').has('name',within(name))))
如何将上面的 gremlin 转换为 cypher 和 return 相邻的 Entity2 倒数。
这里的条件是
out('Entity3') 应该在 Entity2 之外
out('Entity4') 应该在 Entity3 之外并且在提供的值列表中命名
Return inEntity2
的相邻顶点
我不是 100% 确定你在找什么,因为上面的 Gremlin 与描述相比似乎不完整,但我认为你在找的是这样的:
MATCH (e1:Entity1)<-[:Entity2]-(e2)-[:Entity3]->(e3)-[:Entity4]->(e4 {code: 'LHR'})
WHERE e1 IN (id1)
RETURN e2
直接回答:
MATCH (m:Entity1 )<-[:Entity2]-(n)
WHERE (n)-[:Entity3]->()-[:Entity4]->({name: "ABC"})
AND m.id in ["id1"]
RETURN n
# Assuming id is a property here.
# If id is the actual ID of the node
MATCH (m:Entity1 )<-[:Entity2]-(n)
WHERE (n)-[:Entity3]->()-[:Entity4]->({name: "ABC"})
AND ID(m) in ["id1"]
RETURN n
我尝试使用此查询为您的用例创建图表:
CREATE (a:Entity2)-[:Entity2]->(b:Entity1 {id:"id1"}),
(a)-[:Entity3]->(:Entity3)-[:Entity4]->(:Entity4 {name:"ABC"})
图形如下所示:
但是,我认为在编写 gremlin 遍历时,您打算指定顶点的标签而不是边的标签。这就是为什么在我为创建图形而编写的查询中,关系和顶点、关系指向具有相同标签的原因。
如果这是您的意图,那么您的密码查询将如下所示。
MATCH (:Entity1 {id:"id1"})<--(n:Entity2)
WHERE (n)-->(:Entity3)-->(:Entity4 {name: "ABC"})
RETURN n
密码查询新手
g.V().has('Entity1','id',within(id1)).in('Entity2').
where(__.out('Entity3').where(__.out('Entity4').has('name',within(name))))
如何将上面的 gremlin 转换为 cypher 和 return 相邻的 Entity2 倒数。
这里的条件是 out('Entity3') 应该在 Entity2 之外 out('Entity4') 应该在 Entity3 之外并且在提供的值列表中命名
Return inEntity2
的相邻顶点我不是 100% 确定你在找什么,因为上面的 Gremlin 与描述相比似乎不完整,但我认为你在找的是这样的:
MATCH (e1:Entity1)<-[:Entity2]-(e2)-[:Entity3]->(e3)-[:Entity4]->(e4 {code: 'LHR'})
WHERE e1 IN (id1)
RETURN e2
直接回答:
MATCH (m:Entity1 )<-[:Entity2]-(n)
WHERE (n)-[:Entity3]->()-[:Entity4]->({name: "ABC"})
AND m.id in ["id1"]
RETURN n
# Assuming id is a property here.
# If id is the actual ID of the node
MATCH (m:Entity1 )<-[:Entity2]-(n)
WHERE (n)-[:Entity3]->()-[:Entity4]->({name: "ABC"})
AND ID(m) in ["id1"]
RETURN n
我尝试使用此查询为您的用例创建图表:
CREATE (a:Entity2)-[:Entity2]->(b:Entity1 {id:"id1"}),
(a)-[:Entity3]->(:Entity3)-[:Entity4]->(:Entity4 {name:"ABC"})
图形如下所示:
但是,我认为在编写 gremlin 遍历时,您打算指定顶点的标签而不是边的标签。这就是为什么在我为创建图形而编写的查询中,关系和顶点、关系指向具有相同标签的原因。
如果这是您的意图,那么您的密码查询将如下所示。
MATCH (:Entity1 {id:"id1"})<--(n:Entity2)
WHERE (n)-->(:Entity3)-->(:Entity4 {name: "ABC"})
RETURN n