I have the code below .And a I am getting this error.How can I fix it ?
BTW CREATE for the same is working:
<?php
$data2='{
"names" : [{
"name" : "Keanu Reeves1",
"role" : "Neo1"
},
{
"name" : "Keanu Reeves2",
"role" : "Neo2"
},
{
"name" : "Keanu Reeves3",
"role" : "Neo3"
}]
}';
$data ='MERGE (u:Person {names}) RETURN u';
$data2=json_decode($data2);
$data = array("query" =>$data,"params"=>$data2 );
$data_string = json_encode($data);
print_r($data_string);
//print_r($data2);
$ch = curl_init('http://192.....:7474/db/data/cypher');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
print_r ($ch);
$result = curl_exec($ch);
print_r($result);
?>
Error:
Parameter maps cannot be used in MERGE patterns
{ "message" : "Parameter maps cannot be used in MERGE patterns (use a literal map instead, eg. \"{id: {param}.id}\") (line 1, column 17)\n\"MERGE (u:Person {names}) RETURN u\"\n ^", "exception" : "SyntaxException", "fullname" : "org.neo4j.cypher.SyntaxException"
Michael Hunger
Unfortunately due to reasons for query planning those maps cannot be used in merge. Same as if you would have dynamic table columns in sql.
what you can do though is:
create constraint on (n:Label) assert n.id is unique;
MERGE (n:Label {id:{map}.id})
ON CREATE SET n={map}
来源:https://stackoverflow.com/questions/28714278/create-is-working-but-merge-in-neo4j-post-params-has-error