我有5个标签,每个标签都有一个node_id属性。我在csv文件中获得了一百万个节点ID。现在我如何使用cypher找出5个标签中不存在的节点ID?
答案 0 :(得分:0)
根据@ DaveBennett的建议,您可以按照以下步骤操作:
为新标签创建索引(例如Foo
):
CREATE INDEX ON :Foo(node_id);
为所有使用过的Foo
创建一个新的node_id
节点。如果只有具有5个标签之一的节点具有node_id
属性,则可以执行以下操作:
MATCH (n)
WHERE EXISTS(n.node_id)
CREATE (:Foo {node_id: n.node_id});
否则,您可以执行此操作(对于标签L1
到L5
):
MATCH (n)
WHERE (n:L1 OR n:L2 OR n:L3 OR n:L4 OR n:L5) AND EXISTS(n.node_id)
CREATE (:Foo {node_id: n.node_id});
使用:Foo(node-id)
索引查找所有未使用的node-Id
值:
LOAD CSV FROM '...' AS line
OPTIONAL MATCH (f:Foo {node_id: line[0]})
WHERE f IS NULL
RETURN line[0] AS unused;
(可选)删除Foo
个节点。 (您也可以删除:Foo(node-id)
索引(未显示)。
MATCH (n:Foo)
DELETE n;