ノードのラベルを動的に更新しようとしましたが、成功しませんでした。私はノードのすべてのラベルを削除したい、そして、私は同じノードにラベルの新しいリストを設定したいと思った。すべてのラベルを削除してラベルの新しいリストを動的に設定する
私のアプローチ(失敗した、唯一のラベルを削除しようとした):
私はラベルが参照を使用して動的に変更することがカント、と思われます。私の理解は正しいのですか?そして、これをどのように達成できますか?
ノードのラベルを動的に更新しようとしましたが、成功しませんでした。私はノードのすべてのラベルを削除したい、そして、私は同じノードにラベルの新しいリストを設定したいと思った。すべてのラベルを削除してラベルの新しいリストを動的に設定する
私のアプローチ(失敗した、唯一のラベルを削除しようとした):
私はラベルが参照を使用して動的に変更することがカント、と思われます。私の理解は正しいのですか?そして、これをどのように達成できますか?
あなたが言うように、生のサイファーでは動的ラベルの変更はできません。主に、ラベル、プロパティキー、リレーションシップタイプはクエリプランの一部であり、キャッシュに使用されるためです。
ここで説明するように、APOCの手順を使用して動的にラベルを追加する可能性があります:
MATCH (n:Movie)
CALL apoc.create.addLabels(id(n), [ n.genre ]) YIELD node
REMOVE node.studio
RETURN node
たぶん、既存のラベルを削除/交換する機能がAPOCに素晴らしい追加することができ。
WITH ["A","B"] as labels
MATCH (m:Movie)
WITH collect(id(m))[0..20] as movies, labels
CALL apoc.create.setLabels(movies, labels) YIELD node RETURN node, labels(node)
│node │labels(node)│
╞══════════════════════════════╪════════════╡
│{tagline: Prepare to enter a s│[B, A] │
│ecret world of assassins, titl│ │
│e: Ninja Assassin, released: 2│ │
│009} │ │
├──────────────────────────────┼────────────┤
│{tagline: Walk a mile you'll n│[B, A] │
│ever forget., title: The Green│ │
│ Mile, released: 1999} │ │
├──────────────────────────────┼────────────┤
│{tagline: 400 million people w│[B, A] │
│ere waiting for the truth., ti│ │
│tle: Frost/Nixon, released: 20│ │
│08} │ │
├──────────────────────────────┼────────────┤
│{tagline: He didn't want law. │[B, A] │
│He wanted justice., title: Hof│ │
│fa, released: 1992} │ │
├──────────────────────────────┼────────────┤
解決される問題:)
I:
UPDATE
APOCのソースを確認した後、例えば、非マッチングラベルを通過除去するsetLabels手順があります私はあなたの問題を正しく理解していますが、このクエリを試してください。既存のラベルを削除して新しいラベルを貼り付けることができます。既存のラベルとして「NewLabel」を設定し、新しいラベルとして「Person」&「Profession」を使用します。あなたは一致している間あなた自身の条件を置くことができます。 'match(n)REMOVE n:NewLabel SET n:Person:職業復帰n ' – Gandalf
既存のラベルが' NewLabel 'であることがわからない場合は、どのようにラベルを削除しますか? –