【问题标题】:Adding Automate Unique Indexes on Relationships (CYPHER, Neo4j)在关系上添加自动唯一索引(CYPHER,Neo4j)
【发布时间】:2016-05-11 18:24:18
【问题描述】:

我在 Neo4j 中有一组关系,我想以自动方式添加唯一索引,有人知道如何自动完成吗?

如果有一个示例来说明如何生成自动唯一值以与查询中的新实体相关联,那也很不错。谢谢。

【问题讨论】:

  • 很高兴看到输入数据的示例,期望的结果以及您如何尝试实现它。

标签: indexing neo4j cypher unique relationships


【解决方案1】:
  1. Neo4j 对节点有“自动”indexes,但没有关系。您可以为关系创建legacy indexes,但它们不再是索引的首选方式,并且关系不会自动添加到此类索引中。您负责“手动”将节点/关系添加到旧索引。在 neo4j 3.0 中,您可以从 Cypher 调用 APOC procedures for manual indexes,这使得这更加方便,但仍然不是“自动”的。

    注意:APOC 程序必须是installed on the neo4j server 才能使用它们。

  2. 在 neo4j 3.0 中,您的 Cypher 代码现在可以使用 APOC procedures 获取 UUIDs。例如,要获取单个 UUID:

    CALL apoc.create.uuid YIELD uuid
    

【讨论】:

  • 感谢您的评论。您确定这会在关系上添加唯一索引吗?我认为它只适用于节点。我错了吗?
  • 所以经过一番谷歌搜索后,似乎还为关系实施了唯一约束。
  • 如果您始终使用新生成的 UUID 作为您放入旧关系索引的值,则不需要唯一性约束。此外,唯一性约束仅适用于较新的自动索引,与旧索引无关。
【解决方案2】:

目前看来,CONSTRAINTs,因此唯一索引只能应用于节点。我不知道是否有计划将此功能扩展到关系。

【讨论】:

  • 如果您始终使用新生成的 UUID 作为您放入 legacy 关系索引的值,则不需要唯一性约束。事实上,唯一性约束只针对较新的自动索引,与遗留索引无关。
  • 我会调查一下 - 您在评论中没有提供足够的信息。我无法理解你在说什么。不过感谢您的评论。一旦我调查了你在说什么,我会将接受的回复转移到你的回答中。
  • 我再次感谢您的澄清。根据您的评论,blog here 很好地解释了一切。
猜你喜欢
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2015-04-08
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
相关资源
最近更新 更多