An update request consists of two parts - a where
clause and update operators
for new values. The where
clause has the same filtering options as queries.
Note: At least any one of the
update operations
is required to update the rows.
You can perform different types of update operations like set
, inc
, push
, etc. on your data. Following are the different types of update operations:
set
operator is used to set a field’s value with the given value.
Example: Update the name of your pokemon:
mutation {
update_caught_pokemons(
where: {id: {_eq: 1}},
set: {name: "My Cool Pikachu"}
) @postgres {
status
}
}
inc
operator is used to increment/decrement a field’s value by the provided value.
Example: Increment the combat power of your pokemon by 50:
mutation {
update_caught_pokemons(
where: {id: 1},
inc: {combat_power: 50}
) @postgres {
status
}
}
Example: Decrement the hit points of your pokemon by 10:
mutation {
update_caught_pokemons(
where: {id: 1},
inc: {hit_points: -10}
) @postgres {
status
}
}
mul
operator multiplies a field’s value by the given value.
Note: The multiplier can be float as well to achieve division.
Example: Your pokemon has evolved, and you want to multiply its combat power by 2:
mutation {
update_caught_pokemons(
where: {id: 1},
mul: {combat_power: 2}
) @postgres {
status
}
}
min
operator updates a field’s value with the least (minimum) value amongst the specified value and the current value.
Example: Update the trainer’s lowest score after a battle:
mutation {
update_trainers(
where: {id: 1},
min: {lowest_sore: 50}
) @postgres {
status
}
}
Note: In the above example, the
lowest_score
is updated, only if it’s current value is greater than 50.
max
operator updates a field’s value with the maximum value amongst the specified value and the current value.
Example: Update the trainer’s highest score after a battle:
mutation {
update_trainers(
where: {id: 1},
max: {highest_score: 200}
) @postgres {
status
}
}
Note: In the above example the
highest_score
is updated, only if it’s current value is lesser than 200.
currentDate
operator updates a field’s value with the current date/timestamp value.
Example: Update last_battled
field of a pokemon to current date and last_modified
field with the current timestamp:
mutation {
update_caught_pokemons(
where: {id: 1},
currentDate: {
last_battled: true,
last_modified: { $type: "timestamp" }
}
) @postgres {
status
}
}
Note: This is only available for MongoDB.
push
operator can be used to push a given value to an array in a document.
Example: Push thunderbolt
to your pokemon’s list of attacks:
mutation {
update_caught_pokemons(
where: {_id: "1"},
push: {attacks: "thunderbolt"}
) @mongo {
status
}
}
Note: This is only available for MongoDB.
unset
operator deletes the value of a particular field.
Example: Delete is_favourite
field from your pokemons:
mutation {
update_caught_pokemons(
where: {_id: "1"},
unset: {is_favourite: ""}
) @mongo {
status
}
}
Note: The specified value in the unset object (i.e. “") does not impact the operation.
Note: This is only available for MongoDB.
rename
operator rename the field’s name.
Example: Rename is_favourite
field to favourite
:
mutation {
update_caught_pokemons(
where: {_id: "1"},
rename: {is_favourite: "favourite"}
) @mongo {
status
}
}