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

时间:2013-08-25 05:39:29

标签: java neo4j cypher

我对Neo4j很新,只是从上周五开始学习。

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

我的想法现在有两种方法: 1 Cypher with where子句:

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

2具有索引类型属性的Cypher

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

我知道如果userindex只包含密钥类型的用户值,则它不具有选择性,不适合索引。

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

非常感谢你。

4 个答案:

答案 0 :(得分:4)

您想要使用labels。这可能是您的查询:

MATCH (user:User)
RETURN user;

答案 1 :(得分:1)

使用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"] |
+----------------------------------+

答案 2 :(得分:0)

START n =节点(*) 在哪里(n.type)和n.type ='用户' 返回

答案 3 :(得分:0)

如果您想要退回userindex中的所有用户,请使用:

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

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

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