mongo-go-driver聚合查询始终返回“当前”:null

mongo-go-driver聚合查询始终返回“当前”:null,第1张

mongo-go-driver聚合查询始终返回“当前”:null

首先,

Collection.Aggregate()
返回
mongo.Cursor
,而不是“直接”结果。您必须遍历光标以获取结果文档(例如,使用
Cursor.Next()
Cursor.Depre()
),或使用
Cursor.All()
一步来获取所有结果文档。

接下来,您没有指定要累加的字段。您所拥有的是一个简单的“计数”,它将返回已处理文档的数量。要真正总结一个字段,您可以使用

"sum": bson.M{"$sum": "$fieldName"}

让我们来看一个例子。假设我们

"example"
在Collection中有以下文档
"checks"

{ "_id" : ObjectId("5dd6f24742be9bfe54b298cb"), "payment" : 10 }{ "_id" : ObjectId("5dd6f24942be9bfe54b298cc"), "payment" : 20 }{ "_id" : ObjectId("5dd6f48842be9bfe54b298cd"), "payment" : 4 }

这是我们计算支票和对付款进行总计的方法(

payment
字段):

c := client.Database("example").Collection("checks")pipe := []bson.M{    {"$group": bson.M{        "_id":   "",        "sum":   bson.M{"$sum": "$payment"},        "count": bson.M{"$sum": 1},    }},}cursor, err := c.Aggregate(ctx, pipe)if err != nil {    panic(err)}var results []bson.Mif err = cursor.All(ctx, &results); err != nil {    panic(err)}if err := cursor.Close(ctx); err != nil {    panic(err)}fmt.Println(results)

这将输出:

[map[_id: count:3 sum:34]]

结果是包含一个元素的切片,显示

3
文档已处理,总和(付款)为
34



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5013047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存