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

OrientDB - Create Edges if not exist with subselect

我对边有唯一约束:

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. 删除唯一索引,创建重复项,并在每次查询后以某种方式删除重复项 (?)

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

有一个开放的功能请求:

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

我的建议是投票