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 operationsis 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_scoreis 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_scoreis 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
}
}