Inspired by:
MQL Builder TODO:
- Filter Builder
- Sort Builder
- Projection Builder
- Update Builder
- Aggregate Builder
- Index Builder
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())
Hamster is released under the Apache License.