Skip to content
Visit booth 3171 at Google Cloud Next to see how to unlock real-time decisions at scaleMore info

Update

Jump to the Code block for a combined complete example.

Setup

The following examples use the setup and record below to illustrate single record updates in an Aerospike database.

import com.aerospike.client.AerospikeClient;
import com.aerospike.client.policy.WritePolicy;
import com.aerospike.client.policy.RecordExistsAction;
import com.aerospike.client.Bin;
import com.aerospike.client.Key;
import com.aerospike.client.Record;
// Establishes a connection to the server
AerospikeClient client = new AerospikeClient("127.0.0.1", 3000);
// Creates a key with the namespace "sandbox", set "ufodata", and user key 5001
Key key = new Key("sandbox", "ufodata", 5001);

The record structure:

+------+----------+----------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------+
| PK | occurred | reported | posted | report | location |
+------+----------+----------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------+
| 5001 | 20220531 | 20220601 | 20220601 | MAP('{"shape":["circle", "flash", "disc"], "summary":"Large flying disc flashed in the sky above the student union. Craziest thing I've ever seen!", "city":"Ann Arbor", "state":"Michigan", "duration":"5 minutes"}') | GeoJSON('{"type":"Point","coordinates":[42.2808,83.743]}') |
+------+----------+----------+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------+

Policies

Create and Update both utilize write policies that can be defined per command. The client employs a RecordExistsAction, specified within the write policy, to define the operation semantics when a record already exists. The default is UPDATE.

The following variants are available:

Action TypeDescription
CREATE_ONLYCreate if record doesn’t exist already.
UPDATECreate if record doesn’t exist, update otherwise.
UPDATE_ONLYUpdate only, if record exists.
REPLACECreate if record doesn’t exist, replace otherwise.
REPLACE_ONLYReplace only, if record exists.

The following example sets the policy to update the record, only if it already exists.

// Can use a previously defined write policy or create a new one
WritePolicy updatePolicy = new WritePolicy();
updatePolicy.recordExistsAction = RecordExistsAction.UPDATE_ONLY;

Update a record

Update

With the write policy RecordExistsAction set to UPDATE or UPDATE_ONLY, new bins can be added to a record and existing bin values can be updated.

The following example updates the posted bin value to 20220602.

// Create bin with new value
Bin newPosted = new Bin("posted", 20220602);
// Update record with new bin value
client.put(updatePolicy, key, newPosted);
// Close the connection to the server
client.close();

Type specific

Type specific updates can add integers or append/prepend strings to existing integer and string bin values, respectively.

The following example decrements the posted bin value by one.

// Create bin with value to be added
Bin newPosted = new Bin("posted", -1);
// Add new bin value to existing bin
client.add(updatePolicy, key, newPosted);
// Close the connection to the server
client.close();

Replace

To replace a record, set the RecordExistsAction in the write policy to either REPLACE or REPLACE_ONLY. Refer to the policies section above for more information on setting the policy and the create page for creating a record to replace the existing one.

The following example sets the existing write policy to replace ony if the record already exists.

// Updating the previously defined write policy
updatePolicy.recordExistsAction = RecordExistsAction.REPLACE_ONLY;

Delete a bin

A bin is deleted by setting it to null. Delete the posted bin by setting its value to null.

// Set bin value to null
Bin removeBin = Bin.asNull("posted");
// Update record with null bin
client.put(null, key, removeBin);
// Close the connection to the server
client.close();

Code block

Expand this section for a single code block to read a record
import com.aerospike.client.AerospikeClient;
import com.aerospike.client.policy.WritePolicy;
import com.aerospike.client.policy.RecordExistsAction;
import com.aerospike.client.Bin;
import com.aerospike.client.Key;
import com.aerospike.client.Record;
// Establishes a connection to the server
AerospikeClient client = new AerospikeClient("127.0.0.1", 3000);
// Creates a key with the namespace "sandbox", set "ufodata", and user key 5001
Key key = new Key("sandbox", "ufodata", 5001);
// Can use a previously defined write policy or create a new one
WritePolicy updatePolicy = new WritePolicy();
updatePolicy.recordExistsAction = RecordExistsAction.UPDATE_ONLY;
// Create bin with new value
Bin newPosted = new Bin("posted", 20220602);
// Update record with new bin value
client.put(updatePolicy, key, newPosted);
// Close the connection to the server
client.close();
Feedback

Was this page helpful?

What type of feedback are you giving?

What would you like us to know?

+Capture screenshot

Can we reach out to you?