SDN 4按属性列表查询,深度为1

时间:2016-06-28 08:50:05

标签: neo4j spring-data-neo4j spring-data-neo4j-4

我需要一个Spring Data Neo4J存储库方法,该方法将名称列表作为输入,并返回具有特定标签的所有节点,这些节点具有其中一个名称,深度为1。

例如:

Set<Person> findAllByName(Set<String> names)

应该返回一个包含名称在&#34;名称&#34;中的所有人的集合。设置包括所有直接子节点。

我愿意编写自定义查询,过滤器或其他任何内容,我只想以某种方式使其工作。

我已经尝试使用Neo4jOperations.loadAllByProperties编写自定义存储库实现,但我无法弄清楚如何创建与列表匹配的过滤器。

谢谢, 亚历

1 个答案:

答案 0 :(得分:1)

您可以在存储库中使用如下的密码查询:

@Query( "MATCH (a:Person) "+
        "WHERE a.personId IN {0} " +
        "RETURN a ")
List<Person> getPersonList(Set<String> personSet);

然后只需在控制器中调用存储库查询:

List<Person> listPerson = personRepository.getPersonList(names);

编辑:由于您希望也会填充Person的关系,因此基于this博客条目,以下内容可能会有效:

@Query( "MATCH (a:Person) "+
        "WHERE a.personId IN {0} "+
        "WITH a "+
        "MATCH p=(a)-[r*0..1]-()"+
        "RETURN a, nodes(p), rels(p)")
List<Person> getPersonList(Set<String> personSet);