创建唯一节点或创建唯一索引

时间:2013-07-22 10:05:39

标签: neo4j cypher

如何在neo4j中创建唯一节点? 我有用户模型,它有UserIDserNameEMailIDMobileAddressZipcode等属性...

我想为上述用户创建唯一的节点。我将UserIDUserNameEMailIDMobile作为唯一字段。所以,当同一个UserID或此处提到的任何字段试图再次输入时,它应该返回为错误。

有可能吗?

1 个答案:

答案 0 :(得分:1)

我假设这是针对neo4j(1.9)的稳定版本,因为2.0确实改变了索引的呈现方式。

您说您的User节点将具有多个属性,每个属性都是唯一的,这些属性是用作复合键,还是只将UserName用作键?

Neo4j有一个特殊的类用于执行一种“获取或创建”节点,但它只适用于一个键,所以如果你创建一个复合键,你必须做一些事情,比如连接你的键。

查找文档here。这是一个例子:

public Node getOrCreateUserWithUniqueFactory(String username, GraphDatabaseService graphDb) {
    UniqueFactory<Node> factory = new UniqueFactory.UniqueNodeFactory(graphDb, "users") {
        @Override
        protected void initialize(Node createdNode, Map<String, Object> properties) {
            created.setProperty("username", properties.get("username"));
        }
    };

    return factory.getOrCreate("username", username);
}