1

想象一个巨大的用户图,每个用户都有一个名为电子邮件的属性。现在想象一下,我必须将那些使用 gmail 的人归为一个名为“google_mail”的组,而将那些使用“yahoo”的人归为一个名为“yahoo_mail”的组。

我如何遍历断开连接的图(没有根节点去访问每个用户节点,而不是每个用户都连接(即我们可能有完全脱节的用户图)。我想避免将所有这些用户加载到内存中。这是可能的?

4

1 回答 1

5

在 Neo4j 2.0 中有一个名为标签的新功能,它似乎非常适合您的用例,请参阅http://docs.neo4j.org/chunked/milestone/graphdb-neo4j-labels.html

要为所有具有包含“gmail”的电子邮件的节点分配一个GoogleMail标签,您可以使用:

START n=node(*)
WHERE n.email =~ '.*@gmail.com'
SET n :GoogleMail

START n=node(*)
WHERE n.email =~ '.*@yahoo.com'
SET n :Yahoo

请注意,根据您的图形大小,您可能会使用LIMITSKIP应用更改而不是在单个大事务中。

获取所有 gmail 用户的列表:

MATCH (n:GoogleMail) RETURN n
于 2013-11-09T11:30:14.280 回答