Comments (2)
CreateIndex
is used to create an index on the value, not the key.
With the operation tx.Set("idx:"+idxs, msg, nil)
the msg
will be the value that the index is ordered against.
In your case you are appending the idx
to the key.
Here's a full example using AscendGreaterOrEqual
on the keys:
package main
import (
"fmt"
"math/rand"
"strconv"
"github.com/tidwall/buntdb"
)
func main() {
db, _ := buntdb.Open(":memory:")
// add 100 keys with the format 'key:001'
db.Update(func(tx *buntdb.Tx) error {
tx.CreateIndex("idx", "key:*", buntdb.IndexInt)
for i := 0; i < 100; i++ {
idx := strconv.Itoa(rand.Int() % 100)
tx.Set(fmt.Sprintf("key:%03d", i), idx, nil)
}
return nil
})
// find all keys >= 'key:010'
idx := 10
db.View(func(tx *buntdb.Tx) error {
tx.AscendGreaterOrEqual("", fmt.Sprintf("key:%03d", idx),
func(key, val string) bool {
keyidx, _ := strconv.Atoi(key[4:])
fmt.Printf("%s %3d %3s\n", key, keyidx, val)
return true
},
)
return nil
})
}
Here's an example using an index on the value:
package main
import (
"fmt"
"math/rand"
"strconv"
"github.com/tidwall/buntdb"
)
func main() {
db, _ := buntdb.Open(":memory:")
// add 100 keys with the format 'key:001'
db.Update(func(tx *buntdb.Tx) error {
tx.CreateIndex("idx", "key:*", buntdb.IndexInt)
for i := 0; i < 100; i++ {
idx := strconv.Itoa(rand.Int() % 100)
tx.Set(fmt.Sprintf("key:%03d", i), idx, nil)
}
return nil
})
// find all values >= '10'
idx := 10
db.View(func(tx *buntdb.Tx) error {
tx.AscendGreaterOrEqual("idx", strconv.Itoa(idx),
func(key, val string) bool {
keyidx, _ := strconv.Atoi(key[4:])
fmt.Printf("%s %3d %3s\n", key, keyidx, val)
return true
},
)
return nil
})
}
I hope these examples help.
from buntdb.
I'm closing this issue for now. Please feel free to reopen if you have further questions. Thanks.
from buntdb.
Related Issues (20)
- Python bindings
- Enhancement: add new method GetWithTTL to return value together with TTL
- What happens if two funcs write to the db at the exact same time? HOT 1
- Get size of db on disk
- Does the data.db file support rewrite like redis AOF? HOT 2
- Dependencies update due?
- Feature Request: Delete inside iterator
- Question: cost/benefit of supporting generic types; and persisting secondary indexes
- Is it necessary to (defer) db.Close()?
- Expiry works only during runtime and is lost on shrink HOT 6
- Feat: Add DescendGreaterOrEqual for the range [last, pivot], and also DescendRange with option (lt, gte]
- Support replication?
- Java Support?
- Question: What is the format of .db file? HOT 1
- I wonder if we can find closest lat long for a given latlon from spatial index using nearby
- [Feature Request] Is there a way to limit memroy usage?
- Is there any plan to support index on MessagePack? HOT 1
- How to renew the ttl?
- Question: Is buntdb goroutine-safe? HOT 1
- Will "group by" be supported in this lib?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from buntdb.