Delete a single document matching a filter.
local count = collection:DeleteOne(filter)
Parameters:
filter (table): Query filter
Returns:number: Number of documents deleted (0 or 1)-- Delete specific player
local deleted = players:DeleteOne({
steamid = "STEAM_0:1:12345"
})
if deleted > 0 then
print("Player deleted")
else
print("Player not found")
end
-- Delete ban record
bans:DeleteOne({ ban_id = "BAN_12345" })
-- Delete oldest log
logs:DeleteOne({}) -- Deletes first match
Delete all documents matching a filter.
local count = collection:DeleteMany(filter)
Parameters:
filter (table): Query filter
Returns:number: Number of documents deleted-- Delete old logs (90 days)
local deleted = logs:DeleteMany({
created_at = { ["$lt"] = os.time() - (90 * 24 * 60 * 60) }
})
print("Deleted", deleted, "old logs")
-- Delete banned players
players:DeleteMany({ banned = true })
-- Delete test data
players:DeleteMany({
username = { ["$regex"] = "^Test_" }
})
DeleteMany({}) with an empty filter will delete ALL documents! Always double-check your filters.
-- Run cleanup every day
timer.Create("DatabaseCleanup", 24 * 60 * 60, 0, function()
local thirtyDaysAgo = os.time() - (30 * 24 * 60 * 60)
-- Delete old logs
local logs = logsDB:DeleteMany({
created_at = { ["$lt"] = thirtyDaysAgo }
})
-- Delete expired temp bans
local bans = bansDB:DeleteMany({
expires_at = { ["$lt"] = os.time() },
permanent = false
})
print("Cleanup: Deleted", logs, "logs and", bans, "expired bans")
end)
concommand.Add("deleteplayer", function(ply, cmd, args)
if not ply:IsSuperAdmin() then return end
local steamid = args[1]
if not steamid then
ply:ChatPrint("Usage: deleteplayer <steamid>")
return
end
local deleted = players:DeleteOne({ steamid = steamid })
if deleted > 0 then
ply:ChatPrint("Player deleted successfully")
else
ply:ChatPrint("Player not found")
end
end)
deleted = true for important data