【问题标题】:Cypher query - Only match on subset of nodes connected to one node密码查询 - 仅匹配连接到一个节点的节点子集
【发布时间】:2021-12-07 18:09:37
【问题描述】:

如何构建有效的密码查询以仅提取连接到带有“组”标签的节点的“城市”和“年龄”?提前致谢

到目前为止我已经尝试过这个查询:

MATCH(a:Group)-[r]-(b) WHERE b:City OR b:Age RETURN a, b

这个查询让我成功了一半。它返回正确的数据,但在表格格式中数据是错误的。我想包括有附加组节点连接到城市、年龄、姓名和种族的情况

查询应该以这种格式返回,其中每一行都是一个不同的组:

Group1, City, Age
Group2, City, Age

【问题讨论】:

  • 到目前为止你尝试了什么?
  • @TomažBratanič 添加了一个关于我到目前为止所做的事情的查询

标签: neo4j cypher


【解决方案1】:

直接在cypher中指定关系不行吗?我从你的问题中得到了预期的结果:

MATCH (g:Group)-->(c:City), (g:Group)-->(a:Age)
RETURN a, c, g

甚至

MATCH (a:Age)<--(g:Group)-->(c:City)
RETURN a, c, g

样本数据:

CREATE (g1:Group{name:"Group1"}),
  (g2:Group{name:"Group2"}),
  (a:Age{name:"42"}),
  (c:City{name:"Springfield"}),
  (a)<-[:R]-(g1)-[:R]->(c),
  (a)<-[:R]-(g2)-[:R]->(c)

【讨论】:

  • 是的,谢谢您,这些查询似乎也有效。
  • 经过一些测试,这个查询也可以工作。但不确定性能影响: MATCH (a:Group)-[r]-(b) WHERE b:City OR b:Age RETURN DISTINCT a, collect(DISTINCT b) AS sets
  • @sprint_6 您可以随时在查询前添加EXPLAIN or PROFILE 以分别获取执行计划或详细分析
【解决方案2】:

你可以试试:

MATCH (a:Group)-->(b:City), (a)-->(c:Age)  RETURN a,b,c

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多