Skip to content

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 backwards
record, 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 lowest
for 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 50
record, 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),
)
Feedback

Was this page helpful?

What type of feedback are you giving?

What would you like us to know?

+Capture screenshot

Can we reach out to you?