Range operations
MapGetByIndexRangeOp: get by index range
Retrieves values within an index range.
// Get first 10 items (indices 0-9)record, err := client.Operate(nil, key, as.MapGetByIndexRangeOp("leaderboard", 0, as.MapReturnType.KEY_VALUE),)
results := record.Bins["leaderboard"].([]as.MapPair)MapGetByRankRangeOp: get by rank range
Retrieves values within a rank range (sorted by value). Use rank -1 to start from the highest value.
// Get top 5 players (ranks 0-4, lowest to highest)record, err := client.Operate(nil, key, as.MapGetByRankRangeOp("scores", 0, as.MapReturnType.KEY_VALUE),)
// Get bottom 5 players (ranks -5 to -1, highest to lowest)record, err = client.Operate(nil, key, as.MapGetByRankRangeOp("scores", -5, as.MapReturnType.KEY_VALUE),)Alternative: Using MapGetByRankRangeCountOp for top N
// Get top 10 players using count (more intuitive)// Start from rank -1 (highest) and get 10 items going backwardsrecord, err := client.Operate(nil, key, as.MapGetByRankRangeCountOp("leaderboard", -1, 10, as.MapReturnType.KEY_VALUE),)
results := record.Bins["leaderboard"].(as.OpResults)topPlayers := results[0].([]as.MapPair)
// Results are ordered from highest to lowestfor i, player := range topPlayers { fmt.Printf("%d. %v: %v\n", i+1, player.Key, player.Value)}MapGetByValueRangeOp: get by value range
Retrieves items with values within a specified range.
// Get all products with price between 10 and 50record, err := client.Operate(nil, key, as.MapGetByValueRangeOp("products", 10.0, 50.0, as.MapReturnType.KEY_VALUE),)MapGetByKeyRelativeIndexRangeOp: relative index range
Retrieves items relative to a key’s position.
// Get 3 items starting from key "user123"record, err := client.Operate(nil, key, as.MapGetByKeyRelativeIndexRangeOp("users", "user123", 0, as.MapReturnType.KEY_VALUE),)