(http://neo4j.com/docs/developer-manual/current/cypher/clauses/create-unique/)
我是否认为它可用于在两个常量节点之间创建各种关系(即两个相同节点之间存在许多关系),其属性中的值不同?
是否可以有这样的命令?
Load CSV from ...
MATCH (sender:Wallet {primWallAddr:line[0]}), (receiver:Wallet {primWallAddr:line[1]})
CREATE UNIQUE (sender)-[:SendTo{tranHashString:line[2],...uniqueReference:(line[2])}]->(receiver)")
是否可以使用“MERGE”而不是“CREATE UNIQUE”来实现相同的结果? 如果没有,为什么?
答案 0 :(得分:2)
可以使用static ArrayList<Integer> newSmallChange(ArrayList<Integer> list){
int i = 0;
int j = 0;
while (i == j){
i = CS2004.UI(1, list.size());
j = CS2004.UI(1, list.size());
}
int temp = list.get(i);
}
代替MERGE
,甚至可能是首选。您需要做的是通过uniqueReference CREATE UNIQUE
,如下所示:
MERGE
对于唯一引用,稍微更优化Load CSV from ...
MATCH (sender:Wallet {primWallAddr:line[0]}), (receiver:Wallet {primWallAddr:line[1]})
MERGE (sender)-[:SendTo{tranHashString:line[2],...uniqueReference:(line[2])}]->(receiver)
,并使用MERGE
设置其他属性
ON CREATE
如果您希望此发件人和收件人之间只有一个关系,只需更新其属性即可:
Load CSV from ...
MATCH (sender:Wallet {primWallAddr:line[0]}), (receiver:Wallet {primWallAddr:line[1]})
MERGE (sender)-[s:SendTo{uniqueReference: line[2]]->(receiver)
ON CREATE SET s.tranHashString = line[3]
回答问题1:
根据我的理解,你可以在你的案例中使用Load CSV from ...
MATCH (sender:Wallet {primWallAddr:line[0]}), (receiver:Wallet {primWallAddr:line[1]})
MERGE (sender)-[s:SendTo]->(receiver)
ON CREATE SET s.tranHashString = line[3]
ON MATCH SET s.tranHashString = line[3]
,只要知道如果你想改变关系的任何属性,CREATE UNIQUE
将创建一个新的关系,永远不会更新现有的,会毁了你的身份证系统。