1

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

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

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

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

2 对类型属性进行索引的密码

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

我知道如果 userindex 只包含 key 类型的用户值,它就没有选择性,也不利于索引。

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

太感谢了。

4

4 回答 4

4

您需要为此使用标签。这可能是您的查询:

MATCH (user:User)
RETURN user;
于 2013-08-25T09:48:22.980 回答
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"] |
+----------------------------------+
于 2014-09-15T11:04:38.277 回答
0

START n=node(*) WHERE HAS(n.type) AND n.type = 'user' RETURN n

于 2013-08-26T08:55:54.487 回答
0

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

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

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

START u=node:userindex("*:*")
RETURN u.name as names
于 2013-08-26T20:09:11.260 回答