できるようになりたいupdate/enlarge
私のNeo4jデータベースは、そのデータベースの新しいバージョンをアップロードすることによってORそのデータベースの一部です。
私が見つけたもののうち、MERGE
からadd
までの新しいノードがまだ存在しない場合でも、それらを使用できます。しかし、そのプロセスで、既存のノードに新しいプロパティが存在しない場合に、どのようにしてadd
という新しいプロパティをスリム化するにはどうすればよいですか?
私は、ノードがある場合は'John' of 'Age:34' and 'Hair:brown'
とアップロード'John'/'Age:34'/'Coat:Yellow'
-どうすれば取得できますか'John'/'Age:34'/'Hair:brown'/'Coat:Yellow'
。
John(または主要な識別属性)でノードをマージできます。そして、マージが成功した後でプロパティを設定します。
すべての属性のマップを使用して、それらを一度に設定できます
MERGE (n:Node {name: 'John'})
SET n = {name: 'John', age: 34, coat: 'Yellow', hair: 'Brown'}
RETURN n
属性ageとcoatを置き換えたいだけなら、代わりにこれを行うことができます。
MERGE (n:Node {name: 'John'})
SET n.age = 34, n.coat = 'Yellow'
RETURN n
または、地図として追加することもできます
MERGE (n:Node {name: 'John'})
SET n += {age: 34, coat: 'Yellow'}
RETURN n
MERGEは、ノードが後で存在することを保証します(一致または作成されます)。ノードを作成したくない場合は、代わりにMATCHを使用する必要があります。 (「ノードが存在する場合」と言うので、作成しないでください)
最も簡単な方法は
MATCH (n{id:{uuid}) SET n.prop=true
マッチが失敗した場合、彼らはSETに対して何もしません。
後も行を保持したいと仮定します。 (より複雑なクエリの場合)一致をオプションにすることができます
...
OPTIONAL MATCH (n{id:{uuid}) SET n.prop=true
この場合も、一致が失敗した場合、nはnullになり、SETは何もしません。