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

我正在尝试使用 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 本机客户端中执行此查询,我会得到结果并且不会发生错误。


富国沪深
浏览 242回答 2
2回答

慕容森

除了解析一串MongoDB 扩展 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 版本 0.0.12兼容

慕标琳琳

我得到了它!我犯了两个错误:1 - 我必须解析一个 JSON 对象数组2 - 关闭“`”之前没有换行这是工作示例:    group, e := bson.ParseExtJSONArray(`[{      "$group": {        "_id":{          "ProductCode":"$ProductCode",          "Dir":"$Dir",          "WharehouseID":"$WharehouseID"        }      }    }]`)    cursor, e := myCollection.Aggregate(       context.Background(),       group,    )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go