首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongo-go-driver聚合调用总是返回错误

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

Stack Overflow用户
提问于 2018-08-23 00:17:14
回答 2查看 3.2K关注 0票数 3

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

代码语言:javascript
复制
// 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本地客户端执行这个查询,我会得到结果,并且没有发生错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-27 09:38:34

除了解析MongoDB Extended JSON字符串来构建聚合管道之外,您还可以构造一个bson.Array对象(类型化):

例如:

代码语言:javascript
复制
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兼容

票数 1
EN

Stack Overflow用户

发布于 2018-08-23 01:01:15

这样啊,原来是这么回事!

我犯了两个错误:

1-我必须解析JSON对象的数组

2-关闭前无新行"`“

下面是一个工作示例:

代码语言:javascript
复制
    group, e := bson.ParseExtJSONArray(`[{
      "$group": {
        "_id":{
          "ProductCode":"$ProductCode",
          "Dir":"$Dir",
          "WharehouseID":"$WharehouseID"
        }
      }
    }]`)

    cursor, e := myCollection.Aggregate(
       context.Background(),
       group,
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51971121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档