有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Cypher Neo4j获取给定类型的所有节点(从SQL世界中的tablename中选择*)

我对Neo4j很陌生,只是从上周五开始学习

例如,我想知道我们如何才能得到所有具有相同类型的节点。 我想创建一个页面,列出系统中的所有用户

我的想法现在有两种方法: 1带where子句的密码:

CYPHER 2.0  START n=node(*) 
WHERE n.type = 'user' 
RETURN n

2在类型属性上具有索引的密码

START n=node:userindex(type = 'user') RETURN n

我知道,若userindex只包含键类型的用户值,那个么它不是选择性的,也不利于索引

我不知道哪种方法是最好的,因为我发现的所有示例都是从一开始的 一个或两个节点并开始查找与开始节点有关系的其他节点

非常感谢你


共 (4) 个答案

  1. # 1 楼答案

    开始n=节点(*) 其中HAS(n.type)和n.type='user' 返回n

  2. # 2 楼答案

    使用Neo4j v2的完整示例。1.0

    CREATE (n:Person { name: "Tim" });
    CREATE (n:Animal { name: "Tom" });
    
    START m=node(*)                    RETURN m;
    +---------------------+
    | m                   |
    +---------------------+
    | Node[0]{name:"Tim"} |
    | Node[1]{name:"Tom"} |
    +---------------------+
    
    START m=node(*)  MATCH (m:Person)  RETURN m;
    +---------------------+
    | m                   |
    +---------------------+
    | Node[0]{name:"Tim"} |
    +---------------------+
    
    START m=node(*)  MATCH (m:Animal)  RETURN m;
    +---------------------+
    | m                   |
    +---------------------+
    | Node[1]{name:"Tom"} |
    +---------------------+
    
    START m=node(*)                    RETURN m, labels(m);
    +----------------------------------+
    | m                   | labels(m)  |
    +----------------------------------+
    | Node[0]{name:"Tim"} | ["Person"] |
    | Node[1]{name:"Tom"} | ["Animal"] |
    +----------------------------------+
    
  3. # 3 楼答案

    你会想用labels来做这个。这可能是你的疑问:

    MATCH (user:User)
    RETURN user;
    
  4. # 4 楼答案

    如果要返回userindex中的所有用户,请使用:

    START u=node:userindex("*:*")
    RETURN u
    

    并返回所有用户名的列表(假设每个用户都有name属性):

    START u=node:userindex("*:*")
    RETURN u.name as names