2017-04-20 69 views
1

存在我有一个独特的约束边缘:OrientDB - 创建边缘如果不与子查询

CREATE CLASS hasAssignee extends E 
CREATE PROPERTY hasAssignee.out LINK Assignable 
CREATE PROPERTY hasAssignee.in LINK User 
CREATE INDEX UniqueHasAssignee ON hasAssignee(out,in) UNIQUE 

我要多,如果他们还没有在一个查询中存在创建边缘。如果它们确实存在,则可以替换它们,或者根本不添加它们。类似的东西,但没有错误的可能性:

CREATE EDGE hasAssignee FROM (SELECT FROM Project WHERE id=:id) TO (SELECT FROM User WHERE login in :login) 

从我发现可以只处理一个边缘在一个时间(至少我未能出示由工作室查询可解析)

UPSERT我看到几个possibe解决方案(但我没有看到这样的事情在文档):

  1. 像CREATE IFNOTEXISTS
  2. 软指标,不抛出异常,根本不产生额外的边缘
  3. 删除唯一索引,创建副本,每个查询(?)

是否有可能做这样的事情在orientdb后莫名其妙地删除重复?我应该填写一个请求吗?

回答

2

有这个开放的功能要求:

https://github.com/orientechnologies/orientdb/issues/4436

我的建议是你有一个工具来检查的建议多少票上有

+0

投票?用+1添加评论还是使用github upvote更好? (对我来说+1注释是垃圾,我只是在问你是否在计数) –

+0

这不是科学严谨的,但我会说我们都在计数,所以upvote是OK –