mongodb - mongo-go-driver 聚合调用总是返回错误

标签 mongodb go mongo-go

我正在尝试使用 mongo-go-driver(Golang 的 MongoDB 团队驱动程序)进行聚合,但我看不出我在这里做错了什么:

// group
group, e := bson.ParseExtJSONObject(`
    {
      "$group": {
        "_id":{
          "ProductCode":"$ProductCode",
          "Dir":"$Dir",
          "WharehouseID":"$WharehouseID"
        }
      }
    }
`)


cursor, e := myCollection.Aggregate(
    context.Background(),
    group,
)

// e output: "(Location40324) Unrecognized pipeline stage name: '_id'"

这是一个 mongodb 错误,但如果我在 mongodb native 客户端中执行此查询,我会得到结果并且不会发生错误。

最佳答案

解析 MongoDB Extended JSON 字符串的替代方法要构建聚合管道,您还可以构建一个 bson.Array对象(键入):

例如:

pipeline := bson.NewArray(
    bson.VC.DocumentFromElements(
        bson.EC.SubDocumentFromElements(
            "$group",
            bson.EC.SubDocumentFromElements(
                "_id",
                bson.EC.String("ProductCode","$ProductCode"),
                bson.EC.String("Dir","$Dir"),
                bson.EC.String("WharehouseID","$WharehouseID"),
            ),
        ),
    ),
)
cursor, err := collection.Aggregate(context.Background(), pipeline)

上面的代码片段与当前的 mongo-go-driver version 0.0.12 兼容

关于mongodb - mongo-go-driver 聚合调用总是返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51971121/

相关文章:

mongodb - Mongo Aggregate - 带乘法的 $addFields

c# - 如何防止在更新到 MongoDB 时出现 "_t"字段?

java - MongoSpark 保存重复键错误 E11000

mongodb - 禁用 Go mongo bson map 中的某些字段

go - 如何在没有第三方 pkg 的情况下为文本设置颜色

date - 有没有办法迭代特定的月份或星期

mongodb - 与MongoDB go client一起使用时bson struct tag的必要性

mongodb - 如何将actix_web Json存储到mongodb?

node.js - 如何重命名路径以响应填充

go - -bash : cfssl: command not found