目前无法在 _key、_id、_rev、_from 或 _to 等内部属性上创建二级索引。我们希望在 ArangoDB 的未来版本中允许这样做,但这将是一个巨大的代码更改。
获得所需结果的唯一方法是在您保存的边缘中创建一个额外的属性,并将“_from”、“_to”和“type”的组合放入其中。我认为这些值应该在边缘创建时就已经知道了。
所以不要像这样保存优势
db.edges.save(_from, _to, { type: type, other: ... });
它应该是这样的:
// create a unique index on attribute "unique"
db._collection("edges").ensureUniqueConstraint("unique");
// create a variable "unique" which contains the values of _from and _to and type
var unique = _from + "-" + _to + "-" + String(type);
// now save the edge, using the "unique" attribute
db.edges.save(_from, _to, { type: type, unique: unique, other: ... });
这是一种解决方法,但它应该可以解决该特定问题。