【发布时间】:2014-02-20 17:46:24
【问题描述】:
我正在用图表建模一个“标签云”:
(t:Tag {name:'cypher'})-[:IN]->(g:TagGroup)<-[:TAGGED]-(x)
IE:命名标签是“TagGroup”的一部分,零个或多个节点是“TAGGED”的。我选择这种设计是因为我希望能够组合两个或多个命名标签(例如“cypher”和“neo4j”),这样(Tag)s 都是[IN]新的(TagGroup),新的(TagGroup) 是以前为 [TAGGED] 的所有节点的联合端点。
我唯一(不是很愉快)的尝试是:
match (t:Tag {name:'cypher'})-[i:IN]->(g:TagGroup),
(t2:Tag {name:'neo4j'})-[:IN]->(g2:TagGroup)<-[y:TAGGED]-(x)
create (t2)-[:IN]->(g)
create unique (g)<-[:TAGGED]-(x)
with g2 as g2
match (g2)<-[r]->() delete g2,r
我的主要问题是它只结合了两个节点,感觉效率不高(尽管我没有其他选择可以与之比较)。理想情况下,我可以按名称组合任意一组 (Tag)。
如果这可以用 Cypher 完成,有什么想法吗?如果可以,怎么做?
【问题讨论】:
-
那么,您要做的是获取 2 个 TagGroup 并将它们合并在一起?