diff --git a/src/serra/root.go b/src/serra/root.go index f819b6f..c98fcb7 100644 --- a/src/serra/root.go +++ b/src/serra/root.go @@ -112,8 +112,12 @@ func Sets() { {"release", bson.D{{"$last", "$releasedat"}}}, }}, } + sortStage := bson.D{ + {"$sort", bson.D{ + {"release", 1}, + }}} - sets, _ := coll.storage_aggregate(bson.D{{"$match", bson.D{{}}}}, groupStage) + sets, _ := coll.storage_aggregate(mongo.Pipeline{groupStage, sortStage}) for _, set := range sets { fmt.Printf("* %s %s (%.2f Eur) %.0f\n", set["release"].(string)[0:4], set["_id"], set["value"], set["count"]) } @@ -151,7 +155,7 @@ func ShowSet(setname string) error { {"count", bson.D{{"$sum", bson.D{{"$multiply", bson.A{1.0, "$serra_count"}}}}}}, }}, } - stats, _ := coll.storage_aggregate(matchStage, groupStage) + stats, _ := coll.storage_aggregate(mongo.Pipeline{matchStage, groupStage}) LogMessage(fmt.Sprintf("%s", sets[0].Name), "green") LogMessage(fmt.Sprintf("Set Cards: %d/%d", len(cards), sets[0].CardCount), "normal") @@ -229,7 +233,7 @@ func Stats() { {"count", bson.D{{"$sum", 1}}}, }}} - sets, _ := coll.storage_aggregate(bson.D{{"$match", bson.D{{}}}}, groupStage) + sets, _ := coll.storage_aggregate(mongo.Pipeline{groupStage}) for _, set := range sets { // TODO fix primitiveA Problem with loop and reflect fmt.Printf("* %s %d\n", set["_id"], set["count"]) diff --git a/src/serra/storage.go b/src/serra/storage.go index e96d86a..10c347b 100644 --- a/src/serra/storage.go +++ b/src/serra/storage.go @@ -99,13 +99,13 @@ func (coll Collection) storage_remove(filter bson.M) error { } -func (coll Collection) storage_aggregate(matchstage, groupstage bson.D) ([]primitive.M, error) { +func (coll Collection) storage_aggregate(pipeline mongo.Pipeline) ([]primitive.M, error) { // db.cards.aggregate([ {$group: { _id: "$setname", sum: { $sum: "$prices.eur"}}}]) opts := options.Aggregate().SetMaxTime(2 * time.Second) cursor, err := coll.Aggregate( context.TODO(), - mongo.Pipeline{matchstage, groupstage}, + pipeline, opts) if err != nil { log.Fatal(err)