我正在尝试使用mongo- 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本地客户端执行这个查询,我会得到结果,并且没有发生错误。
发布于 2018-08-27 09:38:34
除了解析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兼容
发布于 2018-08-23 01:01:15
这样啊,原来是这么回事!
我犯了两个错误:
1-我必须解析JSON对象的数组
2-关闭前无新行"`“
下面是一个工作示例:
group, e := bson.ParseExtJSONArray(`[{
"$group": {
"_id":{
"ProductCode":"$ProductCode",
"Dir":"$Dir",
"WharehouseID":"$WharehouseID"
}
}
}]`)
cursor, e := myCollection.Aggregate(
context.Background(),
group,
)https://stackoverflow.com/questions/51971121
复制相似问题