首页 > 解决方案 > OrientDB 无法在相同节点之间创建多条边

问题描述

我想使用单个边在节点 A 和节点 B 之间创建多个关系,但该关系包含不同的属性。

边缘:

EPartner(描述、关系日期、类型、重量)

我试过的:

CREATE EDGE EPartner FROM #rid TO #rid CONTENT 'something'

当我创建第一个关系时,上面的行是有效的,但是当我尝试在相同的源和相同的目标之间添加新的关系时,以前的记录会被新的记录替换。

我期望在同一边缘有多个记录,具有相同的目标和源,只是具有不同的属性。这可能吗 ?请给我一些关于尝试什么的提示。

标签: orientdb

解决方案


只是试图验证你的情况。不幸的是,如果没有在边缘声明约束,一切都按预期工作。这是我的实验日志(主动式控制台)


2.6.3 :001 > V.create_class :test
 => Test 
2.6.3 :002 > E.create_class :test_edge
 => TEST_EDGE 
2.6.3 :003 > t =  Test.create name: :test
16.08.(03:46:15) INFO->CREATE VERTEX test set name = ':test:'

2.6.3 :004 > t1 =  Test.create name: :test2
16.08.(03:46:28) INFO->CREATE VERTEX test set name = ':test2:'

2.6.3 :005 > t.assign vertex: t1, via: TEST_EDGE, attributes: { edge_count: 'first' }
16.08.(03:46:42) INFO->CREATE EDGE test_edge from #29:0 to #30:0 content {"edge_count":"first"}

2.6.3 :006 > t.assign vertex: t1, via: TEST_EDGE, attributes: { edge_count: 'second' }
16.08.(03:46:48) INFO->CREATE EDGE test_edge from #29:0 to #30:0 content {"edge_count":"second"}

2.6.3 :007 > t.reload!
2.6.3 :008 > t.out.to_human
 => ["<TEST_EDGE[#35:0] :.: 29:0->{ edge_count: first }->30:0>",
     "<TEST_EDGE[#36:0] :.: 29:0->{ edge_count: second }->30:0>"] 

在顶点之间提供两条边。


推荐阅读