首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Neo4j图形数据库中使用Cypher展开数组并与其他节点匹配

在Neo4j图形数据库中使用Cypher展开数组并与其他节点匹配
EN

Stack Overflow用户
提问于 2020-07-08 17:03:15
回答 1查看 866关注 0票数 0

我正在使用GRANDstack在Neo4j图形数据库上创建一个应用程序,我很难编写一个查询,该查询可以展开属性数组、匹配一些ID、回调与ID相关的名称并将它们重新打包到一个新的数组中。

本质上,我有内存节点(Mems)和人节点( Person ),它们之间的关系如下:(Mems)-WITH->(Person)。也就是说,你可以对你和多个人在一起的事情有一个记忆。微机电系统节点包含一个personID属性,它是一个is数组,而图形数据库中的关系是从与人节点中的人is匹配的个体is数组中建立起来的。

我试图实现的结果如下所示,但是我还没有找到从Person节点返回昵称的方法:

用于生成上述内容的查询如下:

代码语言:javascript
复制
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更有能力做的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 17:39:46

已更新

这应该适用于你:

代码语言:javascript
复制
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的情况下,您应该得到相同的结果:

代码语言:javascript
复制
MATCH (m:Mem)-[:WITH]->(p:Person)
RETURN m.mem, m.date, p.personID, p.nickname
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62799907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档