9

我正在使用 arangodb 的节点驱动程序版本 6 来插入两个顶点之间的关系,如下所示。

db.collection("starks").save({ 
    _from: "Starks/Lyanna-Stark", 
    _to: "Starks/Ned-Stark", 
    type: "married" 
});

这会将关系插入marriedStarks/Lyanna-Stark数据库Starks/Ned-Stark中。但是当我两次运行此查询时,它会使用不同的关系键将其插入两次。我想避免这种情况,因为单个关系应该只存在一个条目。我怎样才能做到这一点?

4

2 回答 2

8

只需为您正在创建的所有关系创建一个唯一索引。例如,如果您的关系集合的名称是relations,则运行此查询以使"_from""_to"、的组合"type"唯一

db.relations.ensureIndex({ 
    type: "hash", 
    fields: [ "_from", "_to", "type" ], 
    unique: true 
});

这是参考链接https://docs.arangodb.com/3.0/Manual/Indexing/Hash.html#ensure-uniqueness-of-relations-in-edge-collections

于 2018-08-18T13:41:06.347 回答
0

您正面临这个问题,因为 Arango 每次保存对象时都会创建一个新 ID。边缘记录的唯一性是通过“_key”键来实现的。

为此,您可以自己提供“_key”键,也可以更改代码逻辑以检查数据库中是否已经存在记录。

于 2018-09-29T15:30:26.050 回答