我正在使用GRANDstack在Neo4j图形数据库上创建一个应用程序,我很难编写一个查询,该查询可以展开属性数组、匹配一些ID、回调与ID相关的名称并将它们重新打包到一个新的数组中。
本质上,我有内存节点(Mems)和人节点( Person ),它们之间的关系如下:(Mems)-WITH->(Person)。也就是说,你可以对你和多个人在一起的事情有一个记忆。微机电系统节点包含一个personID属性,它是一个is数组,而图形数据库中的关系是从与人节点中的人is匹配的个体is数组中建立起来的。
我试图实现的结果如下所示,但是我还没有找到从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我认为这接近我所需要的,但我只是不知道在哪里我可以返回与个人I相关的昵称。这可能是APOC更有能力做的事情吗?
发布于 2020-07-08 17:39:46
已更新
这应该适用于你:
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.nicknamehttps://stackoverflow.com/questions/62799907
复制相似问题