-- Equal
{ level = 5 }
-- Not equal
{ rank = { ["$ne"] = "Banned" } }
-- Greater than / Less than
{ level = { ["$gt"] = 10 } } -- level > 10
{ level = { ["$gte"] = 10 } } -- level >= 10
{ level = { ["$lt"] = 50 } } -- level < 50
{ level = { ["$lte"] = 50 } } -- level <= 50
-- In array
{ rank = { ["$in"] = { "VIP", "Premium", "Ultimate" } } }
-- Not in array
{ rank = { ["$nin"] = { "Banned", "Suspended" } } }
-- AND (implicit)
{
active = true,
level = { ["$gte"] = 10 },
rank = "VIP"
}
-- OR
{
["$or"] = {
{ rank = "Admin" },
{ level = { ["$gte"] = 100 } }
}
}
-- Combined
{
active = true,
["$or"] = {
{ rank = "VIP" },
{ playtime = { ["$gte"] = 1000 } }
}
}
-- Field exists
{ email = { ["$exists"] = true } }
-- Type check
{ age = { ["$type"] = "number" } }
-- Regex (starts with)
{ username = { ["$regex"] = "^Admin" } }
-- Case-insensitive
{ username = { ["$regex"] = "player", ["$options"] = "i" } }
-- Contains
{ bio = { ["$regex"] = "veteran" } }
-- Array contains value
{ tags = "veteran" }
-- Array size
{ items = { ["$size"] = 5 } }
-- All values match
{ tags = { ["$all"] = { "active", "verified" } } }
-- Last 7 days
local weekAgo = os.time() - (7 * 24 * 60 * 60)
{ last_seen = { ["$gte"] = weekAgo } }
-- Between dates
{
created_at = {
["$gte"] = startTime,
["$lte"] = endTime
}
}
-- Today
local today = os.time() - (os.time() % 86400)
{ created_at = { ["$gte"] = today } }
-- Active VIP players level 10+
players:Find({
active = true,
banned = { ["$ne"] = true },
rank = { ["$in"] = { "VIP", "Premium" } },
level = { ["$gte"] = 10 },
last_seen = { ["$gte"] = os.time() - (30 * 24 * 60 * 60) }
})
-- Search with multiple conditions
players:Find({
["$or"] = {
{ username = { ["$regex"] = searchQuery, ["$options"] = "i" } },
{ steamid = searchQuery }
},
banned = false
}, 20)