Skip to content

Update Operations

Update specific keys, batch replace values, and conditional updates.

IMPORTANT

set() on an existing key overwrites the previous value. There is no separate update operation.

zig
const std = @import("std");
const zkv = @import("zkv");

pub fn main() !void {
    var da: std.heap.DebugAllocator(.{}) = .init;
    defer _ = da.deinit();
    const allocator = da.allocator();

    var db = try zkv.Database.open(allocator, .{
        .path = "examples/update_operations.zkv",
    });
    defer db.close();

    const users = db.collection("users");

    // Update specific key (set overwrites)
    try users.set("1:age", "30");
    try users.set("1:age", "31");
    try users.set("1:city", "Boston");

    // Batch update
    var batch = db.batch();
    defer batch.deinit();
    try batch.set(users, "2:role", "viewer");
    try batch.set(users, "3:role", "viewer");
    try batch.commit();

    // Transaction counter
    var txn = try db.transaction();
    try txn.put("counter", "1");
    try db.commitTransaction(&txn);

    // Delete specific key
    try users.delete("1:email");

    // Clear collection
    var temp = db.collection("temp");
    try temp.set("a", "1");
    try temp.set("b", "2");
    _ = try temp.clear();
}

Released under the MIT License.