Mongodb mongo go驱动程序聚合查询始终返回;当前的“:无效的

Mongodb mongo go驱动程序聚合查询始终返回;当前的“:无效的,mongodb,go,mongodb-query,aggregation-framework,mongo-go,Mongodb,Go,Mongodb Query,Aggregation Framework,Mongo Go,我想用 pipeline := []bson.M{ bson.M{"$group": bson.M{ "_id": "", "count": bson.M{ "$sum": 1}}} } ctx, _ := context.WithTimeout(context.Background(), 5*time.Second) result, err := collection.Aggregate(ctx, pipeline) 但它总是回来 "Current"

我想用

pipeline := []bson.M{
    bson.M{"$group": bson.M{
        "_id": "", 
        "count": bson.M{ "$sum": 1}}}
}
ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
result, err := collection.Aggregate(ctx, pipeline)
但它总是回来

"Current": null
任何解决方案?

首先,返回a,而不是“直接”结果。您必须迭代光标以获取结果文档(例如,使用and),或者使用在一个步骤中获取所有结果文档

接下来,您没有指定要求和的字段。您所拥有的只是一个简单的“计数”,它将返回处理的文档数。要对字段求和,可以使用

"sum": bson.M{"$sum": "$fieldName"}
让我们看一个例子。假设我们在数据库
“example”
、集合
“checks”
中有以下文档:

这是我们计算支票和付款总额的方法(
payment
字段):

这将输出:

[map[_id: count:3 sum:34]]
结果是一个包含一个元素的切片,显示已处理的
3
文档,并且(付款)总额为
34
,首先返回a,而不是“直接”结果。您必须迭代光标以获取结果文档(例如,使用and),或者使用在一个步骤中获取所有结果文档

接下来,您没有指定要求和的字段。您所拥有的只是一个简单的“计数”,它将返回处理的文档数。要对字段求和,可以使用

"sum": bson.M{"$sum": "$fieldName"}
让我们看一个例子。假设我们在数据库
“example”
、集合
“checks”
中有以下文档:

这是我们计算支票和付款总额的方法(
payment
字段):

这将输出:

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

结果是一个带有一个元素的切片,显示处理了
3
个文档,并且(付款)总额是
34

我可以用结构形式而不是游标的[]bson.M来获得结果吗?所有?@nanakondor您尝试过吗?是的,你可以。但它必须是struct的一部分或指向struct的指针的一部分,因为聚合的结果通常是一个文档列表。我可以用struct形式而不是cursor中的[]bson.M来获取结果吗?@nanakondor您尝试过吗?是的,你可以。但它必须是一个struct片段或指向struct的指针片段,因为聚合的结果通常是一个文档列表。