要在多个 LevelDB 数据库中进行查询,您需要分别对每个数据库进行操作。
以下是一个简单的示例,展示如何对多个 LevelDB 数据库执行查询:
package main
import (
"log"
"github.com/syndtr/goleveldb/leveldb"
)
type DB struct {
db *leveldb.DB
}
func NewDB(path string) (*DB, error) {
db, err := leveldb.OpenFile(path, nil)
if err!= nil {
return nil, err
}
return &DB{db: db}, nil
}
func (d *DB) Close() {
d.db.Close()
}
func (d *DB) QueryEqual(column, value string) (string, error) {
key := column + "_" + value
data, err := d.db.Get([]byte(key), nil)
if err == leveldb.ErrNotFound {
return "", nil
} else if err!= nil {
return "", err
}
return string(data), nil
}
func QueryMultipleDBs(dbs []*DB, column, value string) {
for _, db := range dbs {
result, err := db.QueryEqual(column, value)
if err!= nil {
log.Println("Error querying database:", err)
continue
}
if result!= "" {
log.Printf("Found in database: %s\n", db.db.Path())
log.Println("Result:", result)
}
}
}
func main() {
db1, err := NewDB("db1_path")
if err!= nil {
log.Fatal(err)
}
defer db1.Close()
db2, err := NewDB("db2_path")
if err!= nil {
log.Fatal(err)
}
defer db2.Close()
dbs := []*DB{db1, db2}
QueryMultipleDBs(dbs, "age", "25")
}