我正在尝试使用MERGE
通过 Neo4JPHP 的语句生成数据库。我所有的查询都在使用MERGE
;但是,它每次都会生成单独的节点,从而导致大量重复。
查询在单个事务中运行。我删除了周围的代码以专注于查询:
$transaction = $client->beginTransaction();
while(...) {
$pq = new Query($client, 'MERGE (n:Page {url:"'.$page.'"}) SET n.title="'.$title.'"');
$transaction->addStatements(array($pageQuery));
$h1Query = new Query($client, 'MATCH (n:Page {url:"'.$page.'"}) SET n.h1s = "['.implode(", ", $h1s).']"');
$transaction->addStatements(array($h1Query));
$scriptQuery = new Query($client, 'MATCH (n:Page {url:"'.$page.'"}) MERGE (n)-[:CONTAINS_SCRIPT]->(s:Script {url:"'.$s.'"})');
$transaction->addStatements(array($scriptQuery));
$styleQuery = new Query($client, 'MATCH (n:Page {url:"'.$page.'"}) MERGE (n)-[:CONTAINS_STYLESHEET]->(s:StyleSheet {url:"'.$s.'"})');
$transaction->addStatements(array($styleQuery));
$otherPageQuery = new Query($client, 'MATCH (n:Page {url:"'.$page.'"}) MERGE (n)-[:LINKS_TO]->(m:Page {url:"'.$match.'"})');
$transaction->addStatements(array($otherPageQuery));
}
$transaction->commit();
现在,在运行了几页之后,它得到了 6 个相同Page
s 的副本,一个带有title
andh1s
元素,其余的没有。
我也尝试过使用CREATE UNIQUE
,但这给出了不支持语法的错误。
我正在运行 Neo4j 2.0.1。有什么建议么?