2017-05-11 26 views
0

創建兩個節點之間的數量關係的約束,我想創建一個約束是這樣的:如何在Neo4j的

create constraint on (a:NodeTypeA)-[r:TYPE_OF_REL]->(b:NodeTypeB) ASSERT count(r) < 2

回答

2

無論何時創建這樣的關係,您都可以使用MERGE而不是CREATE獲得相同的結果。例如:

MATCH (a:NodeTypeA {id: 123}), (b:NodeTypeB {id: 456}) 
MERGE (a)-[r:TYPE_OF_REL]->(b); 

MERGE將不會創建關係,如果它已經存在。 (注意,如果多個MERGE操作可以同時運行,那麼重複關係仍然是可能的。如果您使用的是neo4j 3.1.2或更高版本,或者只需要DB執行一項操作,則這不是問題)

+1

我認爲你指的[bug](https://github.com/neo4j/neo4j/pull/8629)在[Neo4j 3.1.2](https:// github.com/neo4j/neo4j/wiki/Neo4j-3.1-changelog#312)。自修復以來,併發MERGE操作不應產生重複關係。 – InverseFalcon

+0

@InverseFalcon酷!感謝您指出了這一點。我已經更新了我的答案。 – cybersam