https://github.com/sinksmell/hamster
fluent MQL(MongoDB Query Language) generation for golang
https://github.com/sinksmell/hamster
bson golang mongodb mongodb-driver-tool mql
Last synced: 4 months ago
JSON representation
fluent MQL(MongoDB Query Language) generation for golang
- Host: GitHub
- URL: https://github.com/sinksmell/hamster
- Owner: sinksmell
- License: apache-2.0
- Created: 2022-05-02T09:04:06.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-05-13T15:11:59.000Z (about 4 years ago)
- Last Synced: 2024-06-20T22:33:54.391Z (about 2 years ago)
- Topics: bson, golang, mongodb, mongodb-driver-tool, mql
- Language: Go
- Homepage: https://sinksmell.github.io/hamster/
- Size: 23.4 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Hamster - fluent MQL generator for Go
## Hamster is in evolution.
Inspired by:
- [squirrel](https://github.com/Masterminds/squirrel)
- [mongodb-driver-java](https://github.com/mongodb/mongo-java-driver)
MQL Builder TODO:
- [x] Filter Builder
- [x] Sort Builder
- [ ] Projection Builder
- [ ] Update Builder
- [ ] Aggregate Builder
- [ ] Index Builder
## Usage
### Filter & Sort
[Official-Filters-Builder](https://www.mongodb.com/docs/drivers/java/sync/v4.6/fundamentals/builders/filters/#std-label-filters-builders)
```go
import "github.com/sinksmell/hamster"
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://127.0.0.1:27017"))
if err != nil {
fmt.Println(err)
return
}
opt := options.Find()
filter := hamster.FilterDocBuilder.Gt("year", 2000).Type("imdb.rating", bsontype.Double.String()).Doc()
sort := hamster.SortDocBuilder.OrderBy("year", hamster.SortDesc).OrderDescBy("imdb.rating").Doc()
opt.SetSort(sort)
opt.SetLimit(10)
cursor, err := client.Database("sample_mflix").Collection("movies").Find(ctx, filter, opt)
if err != nil {
fmt.Println(err)
return
}
type movie struct {
Title string `bson:"title"`
Year int `bson:"year"`
}
var data []movie
defer cursor.Close(context.TODO())
```
## License
Hamster is released under the
[Apache License]( http://www.apache.org/licenses/).