【问题标题】:Duplicate documents getting inserted in edge collection重复文档被插入边缘集合
【发布时间】:2018-08-18 13:21:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: arangodb arangojs


    【解决方案1】:

    只需为您正在创建的所有关系创建一个唯一索引。例如,如果您的关系集合的名称是 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

    【讨论】:

    • 只是一个修复,如果集合名称是relations,那么查询也应该是db.relations.ensureIndex({ ... }); :P
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-27
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 2012-11-04
      相关资源
      最近更新 更多