You are currently browsing legacy 4.0 version of documentation. Click here to switch to the newest 4.2 version.

We can help you with migration to the latest RavenDB

Contact Us Now
see on GitHub

Compare Exchange: How to Delete Compare Exchange Value

  • Use DeleteCompareExchangeValueOperation to delete a Key and its Value.

  • The Key and its Value are deleted only if the index in the request matches the current index stored in the server for the specified key.

  • For an overview of the 'Compare Exchange' feature click: Compare Exchange Overview

  • In this page:



public DeleteCompareExchangeValueOperation(Class<T> clazz, String key, long index)

key String The key to be deleted
index long The version number of the value to be deleted

Returned object:

public class CompareExchangeResult<T> {
    private T value;
    private long index;
    private boolean successful;

    public T getValue() {
        return value;

    public void setValue(T value) {
        this.value = value;

    public long getIndex() {
        return index;

    public void setIndex(long index) {
        this.index = index;

    public boolean isSuccessful() {
        return successful;

    public void setSuccessful(boolean successful) {
        this.successful = successful;

Return Value
Successful boolean * True if the delete operation was successfully completed
* True if key doesn't exist
* False if the delete operation failed
Value T * The value that was deleted upon a successful delete
* 'null' if key doesn't exist
* The currently existing value on the server if delete operation failed
Index long * The next available version number upon success
* The next available version number if key doesn't exist
* The currently existing index on the server if the delete operation failed


// First, get existing value
CompareExchangeValue<User> readResult
    = store.operations().send(
        new GetCompareExchangeValueOperation<>(User.class, "AdminUser"));

// Delete the key - use the index received from the 'Get' operation
CompareExchangeResult<User> deleteResult
    = store.operations().send(
        new DeleteCompareExchangeValueOperation<>(User.class, "AdminUser", readResult.getIndex()));

// The delete result is successful only if the index has not changed between the read and delete operations
boolean deleteResultSuccessful = deleteResult.isSuccessful();