Spring 数据 Neo4j 4 中的唯一索引
Unique index in Spring Data Neo4j 4
如何保证唯一性:
- 图实体的 属性?
- 同时组合多个属性?
目前我使用SDN 4.0.0.RC2。我查看 the docs,似乎 SDN 4 现在不支持此功能(但将来会支持)。我理解正确吗?
for property of an graph entity?
使用 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
您可以在 bootstrap 您的 spring 上下文时自动执行此操作:
@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?
}
}
}
for combination of several properties simultaneously?
这不是直接支持的。您可以将多个属性连接成一个并在其上创建索引(同时保留原始属性以便能够访问它们)。或者(正如 Michael 所指出的)您可以使用数组 属性 来存储多个值。
如何保证唯一性:
- 图实体的 属性?
- 同时组合多个属性?
目前我使用SDN 4.0.0.RC2。我查看 the docs,似乎 SDN 4 现在不支持此功能(但将来会支持)。我理解正确吗?
for property of an graph entity?
使用 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
您可以在 bootstrap 您的 spring 上下文时自动执行此操作:
@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?
}
}
}
for combination of several properties simultaneously?
这不是直接支持的。您可以将多个属性连接成一个并在其上创建索引(同时保留原始属性以便能够访问它们)。或者(正如 Michael 所指出的)您可以使用数组 属性 来存储多个值。