我正在尝试为列表中的所有ID创建朋友关系,但我收到错误:
Node already exists with label User and property "id"=[2]
Neo.ClientError.Schema.ConstraintViolation
基本上这些ID已经存在,我只想使用for-each一次创建多个id的朋友关系。我可以实现这个目标还是有其他方法可以做到这一点?我真的很感激任何帮助。
MATCH (u:User {id:"3"})
FOREACH (id in ["2","4","5"] |
MERGE (u)-[:FRIEND]->(:User {id:id}))
答案 0 :(得分:2)
由于用户已经存在,因此有一种更简单的方法:
var taskDetail = {
Id: id,
StatusTo: "Completed", //should come from list of status to change
Description: description,
Documents: document,
Visibility: visibility
};
$.ajax({
url: url_link.task_complete + JSON.stringify(taskDetail),
type: "GET",
success: function (e) {
$('#Task-Status').html(e.Status);
$('.desc-entry').hide();
$('.desc-note').find('span').html(e.Description);
$('#Task-Completion').html(DateHelper(e.CurrentCompletionDate));
$('.comp-date').show();
$('.desc-note').show();
/*
* Change status
* hide text area
* show description
* hide complete button
*
*/
$('.thumb').find('ul').empty();
$('#description').val('');
$('.desc-button').hide();
updateTaskDocument(taskDetail.Id);
//updateProjectPoint(taskDetail.Id);
},
error: function (xhrRequest, textStatus, errorThrown) {
alert("Error while sending request");
}
});
答案 1 :(得分:2)
问题在于使用MERGE。如果您不想在没有它们之间存在模式的情况下重新创建任何节点,则Merge需要您绑定关系的两端。 你是绑定的,但由于你与其他用户之间没有FRIEND关系,整个模式是从u创建的,具有FRIEND关系和一个新的用户节点。
您无法在FOREACH中匹配用户,因此请使用
MATCH (u:User {id:"3"})
match (fb:User)
where fb.id in ["2","4","5"]
MERGE (u)-[:FRIEND]->(fb)