我正在使用arangodb的节点驱动程序版本6在两个顶点之间插入关系,如下所示。
db.collection("starks").save({
_from: "Starks/Lyanna-Stark",
_to: "Starks/Ned-Stark",
type: "married"
});
这会将married
和Starks/Lyanna-Stark
之间的关系Starks/Ned-Stark
插入数据库。但是,当我运行此查询两次时,它使用不同的关系键将其插入两次。我想避免这种情况,因为对于单个关系,只应显示一个条目。我该如何实现?
答案 0 :(得分:8)
只需为要创建的所有关系创建唯一索引。例如,如果您的关系集合的名称为relations
,则运行此查询以使"_from"
,"_to"
,"type"
的组合为唯一
db.relations.ensureIndex({
type: "hash",
fields: [ "_from", "_to", "type" ],
unique: true
});
答案 1 :(得分:0)
您面对此问题的原因很简单,那就是每次保存对象时Arango都会创建一个新ID。边缘记录的唯一性是通过“ _key”键实现的。
为此,您可以自己提供“ _key”键,也可以更改代码的逻辑以检查记录是否已存在于数据库中。