Spring Data Neo4j 4中的唯一索引

时间:2015-08-26 12:15:45

标签: spring indexing neo4j spring-data spring-data-neo4j

如何确保唯一性:

  • for graph entity的属性?
  • 同时组合多个属性?

目前我使用的是SDN 4.0.0.RC2。我偷看the docs,似乎SDN 4现在不支持此功能(但将来会支持)。我理解正确吗?

1 个答案:

答案 0 :(得分:5)

  

表示图形实体的属性?

使用cypher在属性上创建(可能是唯一的)索引:

CREATE INDEX ON :Person(name)

唯一索引(又名约束):

CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE

来自http://neo4j.com/docs/stable/query-schema-index.html#schema-index-create-index-on-a-label

您可以在引导弹簧上下文时自动执行此操作:

@Component
public class IndexCreator {

    @Autowired
    Neo4jTemplate neo4jTemplate;

    @PostConstruct
    public void createIndexes() {
        try {
            neo4jTemplate.execute("CREATE INDEX ON :Person(name)", null);
        } catch (Exception ex) {
            // index already exists?
        }
    }
}
  

同时组合多个属性?

这不是直接支持的。您可以将多个属性连接成一个并在其上创建索引(同时保持原始属性能够访问它们)。或者(正如Michael指出的那样)您可以使用array属性来存储多个值。