こんにちは私が持っている数値のリストにないプロパティ値(mypropと呼ぶことができます)を持つGRAPH_OBJECTというラベルを持つすべてのノードを削除します。 CSVまたはテキストファイル。Neo4Jフィールド値を持つノードをCypherでCSVにしないでください
私はこれをCypherでどのように達成しますか?
こんにちは私が持っている数値のリストにないプロパティ値(mypropと呼ぶことができます)を持つGRAPH_OBJECTというラベルを持つすべてのノードを削除します。 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 ANY(property in keys(node)
)での句がちょうどそうそこに各プロパティのように見えるWHERE最初のノードは検索できるので、mypropを検索する必要がある場合は、これは必要ありません。
ありがとうございました。私は、クエリーはブラックリストの代わりにホワイトリストでなければならず、ホワイトリストにないノード(GRAPH_OBJECTというラベルを持つ)を削除したいと考えています。また、私の場合、それは特定のプロパティ値 'myprop'なので、私はこれを変更しますか: "WHERE ANY(キー(ノード)のプロパティWHEREノード[プロパティ]ブラックリスト内)": "WHERE node.'smyprop' NOT INホワイトリスト "? – lordmj