Je veux pouvoir update/enlarge
ma base de données Neo4j en téléchargeant une version plus récente de cette base de données OR dans cette base de données.
De ce que j'ai trouvé, je peux utiliser MERGE
pour add
nouveaux nœuds, s'ils n'existent pas déjà. Mais dans ce processus, comment puis-je modifier add
nouvelles propriétés de ce nœud existant si elles n'existent pas?
Si j’ai un noeud 'John' of 'Age:34' and 'Hair:brown'
et que je télécharge 'John'/'Age:34'/'Coat:Yellow'
- comment puis-je obtenir 'John'/'Age:34'/'Hair:brown'/'Coat:Yellow'
.
Vous pouvez fusionner le nœud sur John (ou l'attribut d'identification principal). Et puis définissez les propriétés après la fusion réussie.
Vous pouvez les définir tous en même temps avec une carte pour tous les attributs
MERGE (n:Node {name: 'John'})
SET n = {name: 'John', age: 34, coat: 'Yellow', hair: 'Brown'}
RETURN n
Si vous souhaitez simplement remplacer les attributs age et coat , vous pouvez le faire à la place.
MERGE (n:Node {name: 'John'})
SET n.age = 34, n.coat = 'Yellow'
RETURN n
Ou vous pouvez aussi l'ajouter sous forme de carte
MERGE (n:Node {name: 'John'})
SET n += {age: 34, coat: 'Yellow'}
RETURN n
MERGE garantit qu'un nœud existera par la suite (qu'il soit mis en correspondance ou créé). Si vous ne voulez pas créer le nœud, vous devez utiliser MATCH à la place. (Puisque vous dites "si le noeud existe", cela implique qu'il ne devrait pas être créé)
Le plus simple est
MATCH (n{id:{uuid}) SET n.prop=true
Si le match échoue, ils n'auront rien à faire contre la SET.
En supposant que vous souhaitiez toujours avoir des lignes après; (pour une requête plus complexe) Vous pouvez simplement rendre la correspondance facultative
...
OPTIONAL MATCH (n{id:{uuid}) SET n.prop=true
Encore une fois, si la correspondance échoue, n sera nul et le SET ne fera rien