OrientDB - 如果子选择不存在则创建边

时间:2017-04-20 13:11:56

标签: 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一次只能处理一个边缘(至少我不会产生可由工作室解析的查询)

我看到了一些可能的解决方案(但我在文档中看不到类似内容):

  1. 类似CREATE IFNOTEXISTS
  2. 不会抛出错误的软索引,根本不会产生额外的边缘
  3. 删除唯一索引,创建重复项,并在每次查询(?)
  4. 后以某种方式删除重复项

    是否有可能在orientdb中做类似的事情?我应该填写请求吗?

1 个答案:

答案 0 :(得分:2)

有一个开放的功能请求:

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

我的建议是投票支持