Delete a row

Finds a single row in a table using filter clauses, and then deletes that row.

Deleting rows produces tombstones. Excessive tombstones can impact query performance.

For general information about working with tables and rows, see About tables with the Data API.

Ready to write code? See the examples for this method to get started. If you are new to the Data API, check out the quickstart.

Result

  • Python

  • TypeScript

  • Java

  • C#

  • curl

Deletes a row that matches the specified parameters. If no rows match the specified parameters, this method does not delete any rows.

Does not return anything.

Deletes a row that matches the specified parameters. If no rows match the specified parameters, this method does not delete any rows.

Returns a promise that resolves once the operation completes.

Deletes a row that matches the specified parameters. If no rows match the specified parameters, this method does not delete any rows.

Does not return anything.

Deletes a row that matches the specified parameters. If no rows match the specified parameters, this method does not delete any rows.

Does not return anything.

Deletes a row that matches the specified parameters. If no rows match the specified parameters, this method does not delete any rows.

Always returns a status.deletedCount of -1, regardless of whether a row was found and deleted.

Example response:

{
  "status": {
    "deletedCount": -1
  }
}

Parameters

  • Python

  • TypeScript

  • Java

  • C#

  • curl

Use the delete_one method, which belongs to the astrapy.Table class.

Method signature
delete_one(
  filter: Dict[str, Any],
  *,
  general_method_timeout_ms: int,
  request_timeout_ms: int,
  timeout_ms: int,
) -> None
Name Type Summary

filter

dict

Describes the full primary key of the row to delete.

For this method, the filter can only use the $eq operator and columns in the primary key.

general_method_timeout_ms

int

Optional. The maximum time, in milliseconds, that the client should wait for the underlying HTTP request.

This parameter is aliased as request_timeout_ms and timeout_ms for convenience.

Default: The default value for the table. This default is 30 seconds unless you specified a different default when you initialized the Table or DataAPIClient object. For more information, see Timeout options.

Use the deleteOne method, which belongs to the Table class.

Method signature
async deleteOne(
  filter: TableFilter<Schema>,
  options?: {
    timeout?: number | TimeoutDescriptor,
  },
): void
Name Type Summary

filter

TableFilter

Describes the full primary key of the row to delete.

For this method, the filter can only use the $eq operator and columns in the primary key.

options.timeout

number | TimeoutDescriptor

Optional. A timeout to impose on the underlying API request.

Use the deleteOne method, which belongs to the com.datastax.astra.client.tables.Table class.

Method signature
void deleteOne(Filter filter)
void deleteOne(
  Filter filter,
  TableDeleteOneOptions options
)
Name Type Summary

filter

Filter

Describes the full primary key of the row to delete.

For this method, the filter can only use the $eq operator and columns in the primary key.

options

TableDeleteOneOptions

General API options for this operation, including the timeout.

Use the DeleteOneAsync method, which belongs to the Table class. You can also use DeleteOne, which is the synchronous version of the method.

Method signature
public Task DeleteOneAsync(
  TableFilter<T> filter, TableDeleteOneOptions<T> options = null
);

For best performance, filter and sort on indexed columns, partition keys, and clustering keys.

Filtering on non-indexed columns is inefficient and resource-intensive, especially for large datasets. With the Data API clients, such operations can hit the client timeout limit before the underlying HTTP operation is complete. If you filter on non-indexed columns, the Data API will give a warning.

An empty filter or omitted filter may also result in an inefficient and long-running operation.

Additionally, the Data API can perform in-memory sorting, depending on the columns you sort on, the table’s partitioning structure, and whether the sorted columns are indexed. In-memory sorts can have performance implications.

Name Type Summary

filter

TableFilter

Describes the full primary key of the row to delete.

For this method, the filter can only use the $eq operator and columns in the primary key.

options

TableDeleteOneOptions

Optional. General API options for this operation, including the timeout. For more information and examples, see Customize API interaction.

Use the deleteOne command.

Command signature
curl -sS -L -X POST "API_ENDPOINT/api/json/v1/KEYSPACE_NAME/TABLE_NAME" \
--header "Token: APPLICATION_TOKEN" \
--header "Content-Type: application/json" \
--data '{
  "deleteOne": {
    "filter": FILTER,
  }
}'
Name Type Summary

filter

object

Describes the full primary key of the row to delete.

For this method, the filter can only use the $eq operator and columns in the primary key.

Examples

The following examples demonstrate how to delete a row in a table.

Delete a row by primary key

You can filter by primary key to find and delete a row. The filter must describe the full primary key and cannot include any other columns.

  • Python

  • TypeScript

  • Java

  • C#

  • curl

from astrapy import DataAPIClient
from astrapy.authentication import UsernamePasswordTokenProvider
from astrapy.constants import Environment

# Get an existing table
client = DataAPIClient(environment=Environment.HCD)
database = client.get_database(
    "API_ENDPOINT",
    token=UsernamePasswordTokenProvider("USERNAME", "PASSWORD"),
)
table = database.get_table("TABLE_NAME", keyspace="KEYSPACE_NAME")

# Delete a row
table.delete_one(
    {"title": "Hidden Shadows of the Past", "author": "John Anthony"}
)
import {
  DataAPIClient,
  UsernamePasswordTokenProvider,
} from "@datastax/astra-db-ts";

// Get an existing table
const client = new DataAPIClient({ environment: "hcd" });
const database = client.db("API_ENDPOINT", {
  token: new UsernamePasswordTokenProvider("USERNAME", "PASSWORD"),
});
const table = database.table("TABLE_NAME", {
  keyspace: "KEYSPACE_NAME",
});

// Delete a row
(async function () {
  const result = await table.deleteOne({
    title: "Hidden Shadows of the Past",
    author: "John Anthony",
  });

  console.log(result);
})();
import com.datastax.astra.client.DataAPIClients;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
import com.datastax.astra.client.tables.Table;
import com.datastax.astra.client.tables.definition.rows.Row;

public class Example {

  public static void main(String[] args) {
    // Get an existing table
    Table<Row> table =
        DataAPIClients.clientHCD("USERNAME", "PASSWORD")
            .getDatabase("API_ENDPOINT", "KEYSPACE_NAME")
            .getTable("TABLE_NAME");

    // Delete a row
    Filter filter =
        Filters.and(
            Filters.eq("title", "Hidden Shadows of the Past"),
            Filters.eq("author", "John Anthony"));

    table.deleteOne(filter);
  }
}
using System.Text.Json;
using DataStax.AstraDB.DataApi;
using DataStax.AstraDB.DataApi.Core;
using DataStax.AstraDB.DataApi.Tables;

namespace Examples;

public class Program
{
  static async Task Main()
  {
    // Get an existing table
    var client = new DataAPIClient(
      new CommandOptions() { Destination = DataAPIDestination.HCD }
    );

    var database = client.GetDatabase(
      "API_ENDPOINT",
      DataAPIClient.UsernamePasswordTokenProvider(
        "USERNAME",
        "PASSWORD"
      ),
      "KEYSPACE_NAME"
    );

    var table = database.GetTable("TABLE_NAME");

    // Delete a row
    var filterBuilder = Builders<Row>.TableFilter;
    var filter = filterBuilder.And(
      filterBuilder.Eq("title", "Hidden Shadows of the Past"),
      filterBuilder.Eq("author", "John Anthony")
    );

    await table.DeleteOneAsync(filter);
  }
}
curl -sS -L -X POST "API_ENDPOINT/v1/KEYSPACE_NAME/TABLE_NAME" \
  --header "Token: APPLICATION_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "deleteOne": {
    "filter": {
      "title": "Hidden Shadows of the Past",
      "author": "John Anthony"
    }
  }
}'

Client reference

  • Python

  • TypeScript

  • Java

  • C#

  • curl

For more information, see the client reference.

For more information, see the client reference.

For more information, see the client reference.

For more information, see the client reference.

Client reference documentation is not applicable for HTTP.

Was this helpful?

Give Feedback

How can we improve the documentation?

© Copyright IBM Corporation 2026 | Privacy policy | Terms of use Manage Privacy Choices

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: Contact IBM