Update
Jump to the Code block for a combined complete example.
Setup
The following examples will use the setup and record below to illustrate single record updates in an Aerospike database.
using Aerospike.Client;
// Define host configurationHost config = new Host("127.0.0.1", 3000);// Establishes a connection to the serverAerospikeClient client = new AerospikeClient(null, config);
// Creates a key with the namespace "sandbox", set "ufodata", and user key 5001Key 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 Type | Description |
---|---|
UPDATE | Create if record doesn’t exist, update otherwise. |
UPDATE_ONLY | Update only, if record exists. |
REPLACE | Create if record doesn’t exist, replace otherwise. |
REPLACE_ONLY | Replace only, if record exists. |
CREATE_ONLY | Create if record doesn’t exist already. |
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 oneWritePolicy 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 valueBin newPosted = new Bin("posted", 20220602);
// Update record with new bin valueclient.Put(updatePolicy, key, newPosted);
// Close the connection to the serverclient.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 addedBin newPosted = new Bin("posted", -1);
// Add new bin value to existing binclient.Add(updatePolicy, key, newPosted);
// Close the connection to the serverclient.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 policyupdatePolicy.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 nullBin removeBin = Bin.AsNull("posted");
// Update record with null binclient.Put(null, key, removeBin);
// Close the connection to the serverclient.Close();
Code block
Expand this section for a single code block to read a record
using Aerospike.Client;
// Define host configurationHost config = new Host("127.0.0.1", 3000);// Establishes a connection to the serverAerospikeClient client = new AerospikeClient(null, config);
// Creates a key with the namespace "sandbox", set "ufodata", and user key 5001Key key = new Key("sandbox", "ufodata", 5001);
// Can use a previously defined write policy or create a new oneWritePolicy updatePolicy = new WritePolicy();updatePolicy.recordExistsAction = RecordExistsAction.UPDATE_ONLY;
Bin newPosted = new Bin("posted", 20220602);
// Update record with new bin valueclient.Put(updatePolicy, key, newPosted);
// Close the connection to the serverclient.Close();