Mat*_*Way 3 neo4j graph-databases cypher
我试图用neo4j创建一个链表,并且有一个没有关系的根节点.这是我想要创建的伪cypher,但我不确定如何,或者即使它是可能的:
START root=node(1), item=node(2)
MATCH root-[old?:LINK]->last
WHERE old IS NOT NULL
CREATE root-[:LINK]->item-[:LINK]->last
DELETE old
WHERE old IS NULL
CREATE root-[:LINK]->item
Run Code Online (Sandbox Code Playgroud)
基本上,如果列表存在,我试图将一个节点插入到列表中,否则只需创建第一个列表项.显然你不能WHERE像我上面所做的那样做多个.有关如何使用密码实现所需功能的任何想法?
文档通过首先:LINK在根节点上创建循环关系来解决问题,但我想在不这样做的情况下解决这个问题(因为您需要为每个节点创建可能不必要的关系).
对于任何有兴趣的人,我想出了一种使用一些WITH技巧来解决上述问题的方法.这本质上是一种在neo4j中创建链表的解决方案,而无需首先创建自引用关系.
START root=node(1), item=node(2)
MATCH root-[old?:LIST_NEXT]->last
CREATE root-[:LIST_NEXT]->item
WITH item, old, last
WHERE old IS NOT NULL
CREATE item-[:LIST_NEXT]->last
DELETE old
Run Code Online (Sandbox Code Playgroud)
这通过首先查找现有的链接关系,并从根到项目创建新的链接关系来实现.然后通过使用WITH我们可以链接查询现在检查匹配的关系是否确实存在.如果是,则将其删除,并将新项目中的剩余链接片段创建为旧项目.
| 归档时间: |
|
| 查看次数: |
3146 次 |
| 最近记录: |