Update existing documents
The only constant is change. Even if the history of data in DefraDB is permanent, you can still alter stored documents.
Syntax
Similarly to the add_TYPE mutation to create documents, you update documents via the update_TYPE mutation. The mutation returns the updated documents.
Syntax – Update mutation
mutation {
update_TYPE(docID: [ID], filter: filterObj, input: updateObj)
}
TYPE– Name of the collection to query.docID– DocID of the document(s) to update. Either a string or a list of strings.filter– Criteria for selecting documents to update (see Filter documents).updateObj– JSON-like object containing the updates, same format as for creating documents.
If both filter and docID are given, both criteria must be fulfilled for a document to be selected.
tip
To remove a field from a document, set its value to null.
Examples
Display database setup
To reproduce the example results from this page, your database needs the following setup.
Database schema
type Book {
title: String!
genre: String
plot: String
rating: Float
ratings: [Float]
author: Person
seller: Company
}
type Person {
name: String!
authoredBooks: [Book]
}
type Company {
name: String!
sells: [Book]
}
Documents setup
mutation {
a1:add_Person(input: {
name: "George Orwell"
}) { _docID name }
a2:add_Person(input: {
name: "William Golding"
}) { _docID name }
a3:add_Person(input: {
name: "David Foster Wallace"
}) { _docID name }
a4:add_Person(input: {
name: "Victor Hugo"
}) { _docID name }
c1:add_Company(input: {
name: "The Independent Hipster Bookshop"
}) { _docID name }
c2:add_Company(input: {
name: "The World-Destroying Large Chain"
}) { _docID name }
b11:add_Book(input: {
title: "1984",
genre: "Fiction",
plot: "A masterpiece of rebellion and imprisonment where war is peace, freedom is slavery, and Big Brother is watching.",
rating: 4.20,
ratings: [3.8, 4.91, 3.1, 2.8],
_authorID: "bae-bc532931-4843-50bc-bbdd-3e31549c8cc6",
_sellerID: "bae-a5300933-fb0a-5b8f-b38e-202565993ff0"
}) { _docID title }
b12:add_Book(input: {
title: "Down and Out in Paris and London",
genre: "Memoir",
plot: "The adventures of a penniless British writer among the down-and-outs of two great cities.",
rating: 4.09,
_authorID: "bae-bc532931-4843-50bc-bbdd-3e31549c8cc6",
_sellerID: "bae-a5300933-fb0a-5b8f-b38e-202565993ff0"
}) { _docID title }
b21:add_Book(input: {
title: "Lord of the Flies",
genre: "Fiction",
plot: "At the dawn of the next world war, a plane crashes on an uncharted island, stranding a group of schoolboys.",
rating: 3.70,
_authorID: "bae-6025af65-e57e-5db5-84dd-d349b130c6d9",
_sellerID: "bae-a5300933-fb0a-5b8f-b38e-202565993ff0"
}) { _docID title }
b31:add_Book(input: {
title: "Infinite Jest",
genre: "Fiction",
plot: "A gargantuan, mind-altering tragi-comedy about the Pursuit of Happiness in America.",
rating: 4.25,
ratings: [3.1, 4.1, 4.5],
_authorID: "bae-26c791a7-fa81-5d86-95c5-4119e2fef915",
_sellerID: "bae-81d5fadb-c2a3-5d95-b235-a220c220bf79"
}) { _docID title }
b32:add_Book(input: {
title: "Consider the Lobster and Other Essays",
genre: "Nonfiction",
plot: "Do lobsters feel pain? Did Franz Kafka have a funny bone? What is John Updike's deal, anyway? And what happens when adult video starlets meet their fans in person? Essays that are also enthralling narrative adventures.",
rating: 4.18,
_authorID: "bae-26c791a7-fa81-5d86-95c5-4119e2fef915",
_sellerID: "bae-81d5fadb-c2a3-5d95-b235-a220c220bf79"
}) { _docID title }
b33:add_Book(input: {
title: "Girl with Curious Hair",
genre: "Fiction",
plot: "Remarkable and unsettling reimaginations of reality.",
rating: 3.85,
_authorID: "bae-26c791a7-fa81-5d86-95c5-4119e2fef915",
_sellerID: "bae-81d5fadb-c2a3-5d95-b235-a220c220bf79"
}) { _docID title }
b41:add_Book(input: {
title: "Les Misérables",
genre: "Fiction",
plot: "Victor Hugo's tale of injustice, heroism and love follows the fortunes of Jean Valjean, an escaped convict determined to put his criminal past behind him.",
rating: 4.21,
ratings: [3.9, 4.1],
_authorID: "bae-4bfe5f4c-d668-5dc3-9de2-eb598af3da7d",
_sellerID: "bae-81d5fadb-c2a3-5d95-b235-a220c220bf79"
}) { _docID title }
}
Update 1984's genre
mutation {
update_Book(
filter: { title: { _eq: "1984" } },
input: { genre: "Dystopia" }
) {
genre
title
}
}
Result
{
"data": {
"update_Book": [
{
"genre": "Dystopia",
"title": "1984"
}
]
}
}
Remove genre value if not in list of allowed ones
mutation {
update_Book(
filter: { genre: { _nin: ["Fiction", "Dystopia"] } },
input: { genre: null }
) {
title
}
}
Result
{
"data": {
"update_Book": [
{
"title": "Down and Out in Paris and London"
},
{
"title": "Consider the Lobster and Other Essays"
}
]
}
}
Update genre for several books via their docIDs
mutation {
update_Book(
docID: ["bae-97eeb5cb-04cf-5575-ab00-3e3285ce79b5", "bae-7da5622a-8e4f-5ac8-9140-d412a81011be"],
input: { genre: "Dystopia" }
) {
genre
title
}
}
Result
{
"data": {
"update_Book": [
{
"genre": "Dystopia",
"title": "1984"
},
{
"genre": "Dystopia",
"title": "Lord of the Flies"
}
]
}
}