Update documents
Data changes, so often it is necessary to update an entire document.
Replace a document
Send a PATCH
request to
/api/rest/v2/namespaces/{namespace_name}/collections/{collections_name}/{document-id}
to replace data to the existing collection. All fields included will be changed.
curl -L \
-X PATCH 'lhttps://$ASTRA_CLUSTER_ID-$ASTRA_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/myworld/collections/fitness/Janet' \
--header "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"firstname": "JanetLee",
"lastname": "Doe"
}'
{"documentId":"Janet"}
A GET
request will show that the data has been replaced in the document:
curl -L -X GET 'https://$ASTRA_CLUSTER_ID-$ASTRA_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/myworld/collections/fitness/Janet' \
--header "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
--header 'Content-Type: application/json'
{
"documentId":"Janet",
"data":{
"email":"janet.doe@gmail.com",
"favorite color":"grey",
"firstname":"JanetLee",
"lastname":"Doe"
}
}
PATCH updates are upserts. If the document doesn’t exist, it will be created.
If it does exist, it will be updated with the new document data.
|
Replace part of of a document or sub-document
It is also possible to update only part of a document. To partially update, send
a PATCH
request to
/api/rest/v2/namespaces/{namespace_name}/collections/{collections_name}/{document-id}/{document-path}
.
In this example, we want to change just the firstname of the document:
curl -L \
-X PATCH 'https://$ASTRA_CLUSTER_ID-$ASTRA_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/myworld/collections/fitness/Janet' \
--header "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"firstname": "Joseph"
}'
{"documentId":"Joey"}
and a GET
will show that only the weights
has been changed.
curl -L \
-X GET 'https://$ASTRA_CLUSTER_ID-$ASTRA_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/myworld/collections/fitness/Joey' \
--header "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
--header 'Content-Type: application/json'
{
"documentId":"Joey",
"data":{
"firstname":"Joseph",
"lastname":"Doe",
"weights":{
"reps":15,
"type":"bench press",
"weight":150
}
}
}
To partially update a sub-document, send a PATCH
request to
/api/rest/v2/namespaces/{namespace_name}/collections/{collections_name}/{document-id}/{document-path}
in the same manner as the last command, but including only sub-document
information to change and the document-path
of the sub-document. Include
all fields that you wish to update.
curl -L \
-X PATCH 'https://$ASTRA_CLUSTER_ID-$ASTRA_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/myworld/collections/fitness/Janet/weights' \
--header "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"reps": 10,
"type": "squat",
"weight": 350
}'
{"documentId":"Joey"}
and a GET
will show that only the weights
has been changed.
curl -L \
-X GET 'https://$ASTRA_CLUSTER_ID-$ASTRA_REGION.apps.astra.datastax.com/api/rest/v2/namespaces/myworld/collections/fitness/Joey' \
--header "X-Cassandra-Token: $ASTRA_DB_APPLICATION_TOKEN" \
--header 'Content-Type: application/json'
{
"documentId":"Joey",
"data":{
"firstname":"Joseph",
"lastname":"Doe",
"weights":{
"reps":10,
"type":"squat",
"weight":350
}
}
}