[英]Unwind array and match with other nodes using Cypher on Neo4j graph database
我正在使用 GRANDstack 在 Neo4j 图形数据库之上创建一个应用程序,我正在努力编写一个展开属性数组、匹配一些 ID、拉回与 ID 关联的名称并将它们重新打包到新数组中的查询。
本质上,我有Memory节点(Mems)和Person节点(Person),它们的关系如下:(Mems)-[WITH]->(Person)。 即,您可以拥有一个 memory 与多人在一起的东西。 Mems 节点包含一个 personID 属性,该属性是一个 ID 数组,并且图形数据库中的关系是根据 Mems 节点中与 Person 节点中的 personID 匹配的 personID 数组构建的。
我试图实现的结果如下所示,但是我还没有找到从 Person 节点返回昵称的方法:
我用来生成上述查询的查询如下:
MATCH (m:Mem)-[WITH]->(p:Person)
WHERE m.personID IS NOT NULL
UNWIND m.personID as personID
CALL {
WITH personID
MATCH (p:Person)
WHERE personID = p.personID
RETURN p.nickname
}
RETURN m.mem, m.date, personID, p.nickname
我认为它接近我所需要的,但我只是无法弄清楚我可以返回与 personID 关联的昵称的最后一点。 这可能是APOC更有能力做的事情?
[更新]
这应该适合你:
MATCH (m:Mem)-[:WITH]->(p:Person)
WHERE p.personID IN m.personID
RETURN m.mem, m.date, p.personID, p.nickname
另外,请注意,如果要查询WITH
关系类型,则关系模式必须使用:WITH
而不是WITH
。
当然,既然你有WITH
关系,你应该考虑删除多余的m.personID
属性。 您应该以这种方式在没有m.personID
的情况下获得相同的结果:
MATCH (m:Mem)-[:WITH]->(p:Person)
RETURN m.mem, m.date, p.personID, p.nickname
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.