2014-10-06 51 views

回答

3

您必須刪除索引,然後添加約束。

DROP INDEX ON :BACM(name) 
CREATE CONSTRAINT ON (bacm:BACM) ASSERT bacm.name IS UNIQUE 

你需要在兩個單獨的查詢中做到這一點。

其原因是它們都是Lucene索引,只是不同的類型,並且由於Neo4j使用索引而不必指定要使用哪個索引,所以如果存在多個相同的名稱,它會窒息。

編輯:應該指出,你有許多節點已經到位的事實只有當你有多個名稱衝突的節點時很重要。創建和刪除索引不會傷害您的節點,數據庫將在可用時使用索引,否則使用Cypher,並在告知時重建索引。當你創建你的約束時,如果你有兩個衝突的節點,它會通知你,新的約束將失敗。

從我自己的測試剛纔:

Unable to create CONSTRAINT ON (omg:Omg) ASSERT omg.foo IS UNIQUE: 
Multiple nodes with label `Omg` have property `foo` = 'foo': 
    node(2) 
    node(4)