neo4j可以合并相同的对象节点吗?

时间:2013-08-24 21:15:21

标签: neo4j

我正在考虑学习图形数据库(比如neo4j),但我很好奇图形数据库中是否有这样的设施,例如,如果我这样做:

Step 1: create:  A --> B --> C
Step 2: create:  D --> B --> E
Step 3: create:  F --> G --> E

这应该自动导致存储的图形如下:

A ---> B ----> C
      /|\  \ 
D -----|    \--> E
                /|\
F ---> G --------|

这里公共节点B和E被合并(无需以编程方式检查这些节点的先前存在)。在一个现实世界的例子中,将有1000个这样的B和E将在关系DB中实现,如下所示:

FK = Foreign Key  .. X Y Z are keys for three primary tables. 

___________       ________    _____________    ________
X  | FK(Y)        Y | ...     FK(Y) | FK(Z)     Z | ..
---|-------       --|-----    ------|------    ---|----
A  | FK(B)        B | ...     FK(B) | FK(C)     C | ..
D  | FK(B)        G | ..      FK(B) | FK(E)     E | ..
F  | FK(G)                    FK(G) | FK(E)

在RDB中,(例如,当我插入关系D - > B时)我必须以编程方式在第二个表中搜索重复的对象B(或者在尝试插入相同的内容时查找失败代码对象进入它然后得到B的外键与D一起。我希望在图DB中,这样的事情由DB来处理。

1 个答案:

答案 0 :(得分:3)

你应该看一下v2.0的新MERGE子句,它允许你有一个后续的ON MATCHON CREATE子句,这样你就可以在一个节点上采取一个特定的动作找到vs创建。

请参阅2.0M3 blog post了解简介(2.0M4是最新版本,但MERGE是在M3中介绍的),以及“2.0中的新功能”video