Neo4j链表 - 多个节点

时间:2013-03-26 19:38:44

标签: neo4j

我正在努力了解如何使用链接列表来提高性能并在Neo4j上创建活动源。仍在努力学习Cypher,所以我有一个问题..我找到了一些链接列表的例子,但是我需要更大范例的清单,最终将所有部分放在我的脑海中..

我使用了grepcode中的代码,并发现它比Neo4j手册中的示例更有帮助。然而,我仍然有点困惑。有人可以修改它,在链表中说七个节点有七个项目,然后在它的前面插入一个节点吗?

是的,我正在尝试将最新的状态更新放在链接列表的顶部。这个例子并没有真正做到这一点,但它很接近..所以寻找一些mod ..不,我还没有真正编码,仍然试图先掌握Cypher - 将继续研究它未来两周..让Ruby on Rails端工作..只需要了解Cypher / Neo使用的链表更好。


CREATE zero={name:0,value:0}, two={value:2,name:2}, zero-[:LINK]->two-[:LINK]->zero

==== zero ====

MATCH zero-[:LINK*0..]->before,
after-[:LINK*0..]->zero,
before-[old:LINK]->after
WHERE before.value? <= 1 AND
1 <= after.value?
CREATE newValue={name:1,value : 1},
before-[:LINK]->newValue,
newValue-[:LINK]->after
DELETE old
==== zero ====
MATCH p = zero-[:LINK*1..]->zero
RETURN length(p) as list_length

我在脑海里想要做的是理解之前和零数据集 - 我差不多拥有它,但是想看看它是如何在一个有两个以上的开始的集合上完成的节点,以消除任何混淆

谢谢!

1 个答案:

答案 0 :(得分:0)

前面的节点很特殊,因为它没有传入的链接关系。通常,您还会在某处保持与头节点的连接,因此这是将此链接替换为头节点并将头节点向前移动一步。像这样:

start user=node:node_auto_index(user="me")
match user-[old:MESSAGES]->head
delete old
create new_heads = { title: "Title", date : 2348972389, text: "Text" },
 user-[:MESSAGES]->new_head-[:LINK]->head