重复文档被插入到边缘集合中

Duplicate documents getting inserted in edge collection

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

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

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

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

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

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

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

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