Delete or DeleteOne¶
Delete the specified items from a collection.
Overview¶
The delete operation removes data from a specific collection within a DeltaTraceDatabase instance.
You can delete multiple items that match a condition, or only one item using deleteOne.
If returnData / return_data is set to true, the deleted objects will be returned in the result.
Usage¶
import 'package:delta_trace_db/delta_trace_db.dart';
void main() {
final db = DeltaTraceDatabase();
final now = DateTime.now().toUtc().toIso8601String();
// Add sample data
final addQuery = RawQueryBuilder.add(
target: 'users',
rawAddData: [
{"id": -1, "name": 'Taro', "age": 30, "createdAt": now},
{"id": -1, "name": 'Jiro', "age": 25, "createdAt": now},
{"id": -1, "name": 'Saburo', "age": 20, "createdAt": now},
],
serialKey: "id",
returnData: true,
).build();
db.executeQuery(addQuery);
// Delete multiple items
final deleteQuery = QueryBuilder.delete(
target: 'users',
queryNode: FieldLessThan("age", 30),
returnData: true,
).build();
final deleteResult = db.executeQuery(deleteQuery);
print(deleteResult.toDict());
// Delete only one item
final deleteOneQuery = QueryBuilder.deleteOne(
target: 'users',
queryNode: FieldEquals("name", "Taro"),
returnData: true,
).build();
final deleteOneResult = db.executeQuery(deleteOneQuery);
print(deleteOneResult.toDict());
}
from datetime import datetime, timezone
from delta_trace_db import (
DeltaTraceDatabase,
RawQueryBuilder,
QueryBuilder,
FieldLessThan,
FieldEquals,
)
db = DeltaTraceDatabase()
now = datetime.now(timezone.utc).isoformat()
# Add sample data
add_query = RawQueryBuilder.add(
target="users",
raw_add_data=[
{"id": -1, "name": "Taro", "age": 30, "created_at": now},
{"id": -1, "name": "Jiro", "age": 25, "created_at": now},
{"id": -1, "name": "Saburo", "age": 20, "created_at": now},
],
serial_key="id",
return_data=True,
).build()
db.execute_query(add_query)
# Delete multiple items
delete_query = QueryBuilder.delete(
target="users",
query_node=FieldLessThan("age", 30),
return_data=True,
).build()
delete_result = db.execute_query(delete_query)
print(delete_result.to_dict())
# Delete only one item
delete_one_query = QueryBuilder.delete_one(
target="users",
query_node=FieldEquals("name", "Taro"),
return_data=True,
).build()
delete_one_result = db.execute_query(delete_one_query)
print(delete_one_result.to_dict())
Result¶
The executeQuery / execute_query method returns a QueryResult object.
If the returnData / return_data flag is true, the deleted objects will be stored in QueryResult.result.
Example output:
* delete
{className: QueryResult, version: 6, isSuccess: true, target: users, type: delete,
result: [
{id: 1, name: Jiro, age: 25, createdAt: 2025-11-03T13:49:18.755995Z},
{id: 2, name: Saburo, age: 20, createdAt: 2025-11-03T13:49:18.755995Z}
], dbLength: 1, updateCount: 2, hitCount: 2, errorMessage: null}
* deleteOne
{className: QueryResult, version: 6, isSuccess: true, target: users, type: deleteOne,
result: [
{id: 0, name: Taro, age: 30, createdAt: 2025-11-03T13:49:18.755995Z}
], dbLength: 0, updateCount: 1, hitCount: 1, errorMessage: null}
API¶
Dart: [QueryBuilder.delete]
Dart: [QueryBuilder.deleteOne]
Dart(RawData): [RawQueryBuilder.delete]
Dart(RawData): [RawQueryBuilder.deleteOne]
Python:
[QueryBuilder.delete]Python:
[QueryBuilder.delete_one]Python(RawData):
[RawQueryBuilder.delete]Python(RawData):
[RawQueryBuilder.delete_one]
Notes¶
Collections are automatically created if they do not exist.
The queryNode defines the condition for deletion. For detailed syntax, see the nodes section.
The mustAffectAtLeastOne / must_affect_at_least_one flag, if true, will cause the operation to fail when no matching items are found.
If returnData / return_data is true, the deleted objects will be included in the result.
Sorting options can be specified using sortObj (see sort for details).
You can attach optional metadata such as Cause for auditing or trace logging.
Nested fields in objects can be accessed using dot notation. For example, to access {“a”: {“b”: “c”}}, use
"a.b"as the field name.