您好,我想刪除所有帶有標籤GRAPH_OBJECT的節點,它們的屬性值(讓我們稱之爲myprop)不在我列出的數值列表中CSV或文本文件。Neo4J用Cypher刪除字段值不帶CSV的節點
我如何用Cypher完成這項工作?
您好,我想刪除所有帶有標籤GRAPH_OBJECT的節點,它們的屬性值(讓我們稱之爲myprop)不在我列出的數值列表中CSV或文本文件。Neo4J用Cypher刪除字段值不帶CSV的節點
我如何用Cypher完成這項工作?
這應該工作。
// load csv
LOAD CSV FROM "file://values.txt" AS row
// create a collection of the first column turned into numeric values
WITH collect(toInt(row[0])) AS blacklist
// find the nodes
MATCH (node:GRAPH_OBJECT)
// for any of the properties of the node, if it's value is in our blacklist
WHERE ANY(property in keys(node) WHERE node[property] IN blacklist)
// delete node and relationships
DETACH DELETE node;
與邁克爾飢餓的代碼開始,並與您的評論的更新,我相信這應該工作:
// load csv
LOAD CSV FROM "file://values.txt" AS row
// create a collection of the first column turned into numeric values
WITH collect(toInt(row[0])) AS whitelist
// find the nodes
MATCH (node:GRAPH_OBJECT)
// for any of the properties of the node, if it's value is in our blacklist
WHERE NOT node.myprop IN whitelist)
// delete node and relationships
DETACH DELETE node;
第一個WHERE子句中邁克爾的代碼(WHERE ANY(property in keys(node)
)似乎只是有這麼每個屬性上該節點可以搜索,所以如果你只需要搜索myprop,那麼這不應該需要。
謝謝。我認爲查詢應該是白名單而不是黑名單,我們希望刪除不在白名單中的任何節點(標籤爲GRAPH_OBJECT)。同樣在我的情況下,它是一個特定的屬性值'myprop',所以我改變這個:「WHERE ANY(屬性在鍵(節點)WHERE節點[屬性] IN黑名單)」:「WHERE node.'myprop' NOT IN白名單」 ? – lordmj