想象一下用户的巨大图表,每个用户都有一个名为email的属性。现在想象一下,我必须将那些使用gmail的人分组在一个名为“google_mail”的组中,将那些使用“yahoo”的人分组到名为“yahoo_mail”的组中。
如何遍历断开连接的图形(没有根节点访问每个用户节点而不是每个用户都连接(即我们可以完全脱节用户图)。我想避免将所有这些用户加载到内存中这可能吗?
答案 0 :(得分: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
请注意,根据您的图表尺寸,您可以使用LIMIT
和SKIP
来应用更改,而不是在单个巨大的交易中。
获取所有Gmail用户的列表:
MATCH (n:GoogleMail) RETURN n