Vue d'ensemble
La clause update()
est utilisée pour mettre à jour les valeurs des propriétés (sauf _id
et _uuid
) des nodes et des edges qui répondent aux conditions données.
Syntaxe
// Mettre à jour les nodes
update().nodes(<filter>)
.set({<property1>: <value1>, <property2>: <value2> ...})
.limit(<N>)
// Mettre à jour les edges
update().edges(<filter>)
.set({<property1>: <value1>, <property2>: <value2> ...})
.limit(<N>)
- Les nodes ou edges à mettre à jour doivent répondre aux conditions spécifiées dans la méthode
nodes()
ouedges()
. Laissez vide pour spécifier tous les nodes ou edges. - Fournir de nouvelles valeurs pour les properties dans la méthode
set()
. - Utilisez éventuellement la méthode
limit()
pour restreindre le nombre de nodes ou edges à mettre à jour. - Permet de définir un alias pour la clause, avec le type de données étant soit NODE, soit EDGE.
Exemple de Graph
Exécutez ces UQL lignes par ligne dans un graphset vide pour créer ce graph :
create().node_schema("user").edge_schema("follow")
create().node_property(@user, "name").node_property(@user, "age", int32).edge_property(@follow, "time", datetime)
insert().into(@user).nodes([{_id:"U001", _uuid:1, name:"Jason", age:30}, {_id:"U002", _uuid:2, name:"Tim"}, {_id:"U003", _uuid:3, name:"Grace", age:25}, {_id:"U004", _uuid:4, name:"Ted", age:26}])
insert().into(@follow).edges([{_uuid:1, _from_uuid:4, _to_uuid:1, time:"2021-9-10"}, {_uuid:2, _from_uuid:3, _to_uuid:2, time:"2020-3-12"}, {_uuid:3, _from_uuid:4, _to_uuid:2, time:"2023-7-30"}])
Exemples
Mettre à jour les Nodes
update().nodes({name == "Tim"}).set({name: "Tom"})
Cela met à jour la propriété name
des nodes dont le name
est Tim. Le node avec _id
U002 est mis à jour.
Mettre à jour les Edges
update().edges({time > "2021-5-1"}).set({time: dateAdd(time, 1, "day")}) as edges
return edges{*}
Cela met à jour la propriété time
des edges dont le time
est postérieur à 2021-5-1, à un jour après.
Résultat :
_uuid | _from | _to | _from_uuid |
_to_uuid | time |
---|---|---|---|---|---|
1 | U004 | U001 | 4 | 1 | 2021-09-11 00:00:00 |
3 | U004 | U002 | 4 | 2 | 2023-07-31 00:00:00 |
Mettre à jour Tous les Nodes/Edges
update().nodes().set({age: age + 1}) as n
return table(n.name, n.age)
Résultat :
name | age |
---|---|
Jason | 31 |
Tom | null |
Grace | 26 |
Ted | 27 |
Mettre à jour un Nombre Limité de Nodes/Edges
update().nodes({@user}).set({name: lower(name)}).limit(2) as nodes
return nodes{*}
Cela met à jour la propriété name
des nodes @user
en caractères minuscules, mais seulement pour deux nodes.
Résultat :
_id | _uuid | name | age |
---|---|---|---|
U001 | 1 | jason | 31 |
U002 | 2 | tom | null |
Raisons communes des Échecs
- La mise à jour échoue lorsque
_uuid
ou_id
est inclus dans la méthodeset()
, car les propriétés d'identifiant unique ne peuvent pas être mises à jour.