Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 删除重复节点检查特定键是否具有相同的值_Neo4j_Cypher - Fatal编程技术网

Neo4j 删除重复节点检查特定键是否具有相同的值

Neo4j 删除重复节点检查特定键是否具有相同的值,neo4j,cypher,Neo4j,Cypher,在my db中,有些节点具有以下形式: n:Contact { "name": "name surname", "created_timestampe": 1460411261, "updated_timestamp": 1494083876, "contact_point": [ "+39*********" ] } 但有些节点的键名和触点的值是重复的。我不关心创建的\u时间戳或更新的\u时间戳,但我想删除这些重复项,检查contact\u p

在my db中,有些节点具有以下形式:

n:Contact
{
   "name": "name surname",
   "created_timestampe": 1460411261,
   "updated_timestamp": 1494083876,
   "contact_point": [
        "+39*********"
   ]
 }
但有些节点的键名和触点的值是重复的。我不关心创建的\u时间戳或更新的\u时间戳,但我想删除这些重复项,检查contact\u point值是否真的相同。 我写了这个,但我不确定它是否正确:

MATCH (c:Contact)
WITH c.contact_point AS contact_point, COLLECT(c) AS contacts
WHERE SIZE(contacts) > 1
FOREACH (n IN contacts| DETACH DELETE n);

您可能不想删除所有重复项。要仅保留其中一个,请改为这样做(只要您确定可以删除要删除的重复项的所有关系):

请注意,
WHERE SIZE(contacts)>1
测试是不必要的,因为如果
contacts
只有一个元素,那么
contacts[1..]
将是一个空列表


你可以用
c.name做类似的事情

我认为它很有效,非常感谢!那么,我是否应该执行两个查询,一个用于c.name,另一个用于c.contact\u point?但是,contact_point key的值是一个数组,有时两个、三个或更多contact节点具有相同的名称,但contact_point具有两个或三个包含另一个节点的contact_point值的值。在这种情况下我能做什么?你需要在你的问题中弄清楚这两个属性是如何关联的。现在根本不清楚制约因素是什么。
MATCH (c:Contact)
WITH c.contact_point AS cp, COLLECT(c) AS contacts
FOREACH (n IN contacts[1..] | DETACH DELETE n);