mongodb 复杂聚合运算
select area, sum(amount) as sum, count(1) from table where hierachy like '0,4%' group by area order by sum假如是计算区域记录个数 和 总数量 条件是 模糊查询 hierachy 以0,4开头的 记录, 按 sum 排序
mongodb的代码为
db.collection.aggregate([{$match:{hierachy:/^0,4/}}])pipeline := mongo.Pipeline{ bson.D{ {"$match", bson.D{{"hierachy", bsonx.Regex("^0,4", "im")}}}, }, bson.D{ {"$group", bson.D{ {"_id", "$betarea"}, {"sum", bson.D{{"$sum", "$amount"}}}, {"count", bson.D{{"$sum", 1}}}, }}, }, bson.D{ {"$sort", bson.D{{"sum", -1}}}, }, } cursor, err := collection.Aggregate(context.TODO(), pipeline, opts) if err != nil { log.Fatal(err) } defer cursor.Close(context.TODO()) // get a list of all returned documents and print them out // see the mongo.Cursor documentation for more examples of using cursors var results []bson.M if err = cursor.All(context.TODO(), &results); err != nil { log.Fatal(err) } fmt.Println("######", len(results)) for _, result := range results { //fmt.Printf("area %v sum %v count %v\n", result["_id"], result["sum"], result["count"]) fmt.Printf("%+v\n", result) }