为了账号安全,请及时绑定邮箱和手机立即绑定

golang中的mongodb聚合

golang中的mongodb聚合

Go
慕尼黑5688855 2021-08-16 20:09:56
我有一个这样的 mongodb 集合:{    source: "...",    url:  "...",    comments: [        .....    ]}我想根据评论数量找到前 5 个文档。我可以在命令提示符中使用以下查询找到所需的结果:db.gmsNews.aggregate([  {     $match:{source:"..."}  },  {     $unwind: "$comments"  },  {     $group: {        _id: "$url",        size: {           $sum: 1        },     }  },  {     $sort : { size : -1 }   },  {      $limit : 5  }])这给了我以下输出:{ "_id" : "...", "size" : 684 }{ "_id" : "...", "size" : 150 }现在我想使用 mgo 驱动程序将此查询转换为 golang。我通过以下方式使用管道:o1 := bson.M{        "$match" :bson.M {"source":"..."},}o2 := bson.M{    "$unwind": "$comments",}o3 := bson.M{    "$group": bson.M{        "_id": "$url",        "size": bson.M{            "$sum": 1,        },    },}o4 := bson.M{    "sort": bson.M{        "size": -1,    },}o5 := bson.M{    "$limit": 5,}operations := []bson.M{o1, o2, o3, o4, o5}pipe := c.Pipe(operations)// Run the queries and capture the resultsresults := []bson.M{}err1 := pipe.One(&results)if err1 != nil {    fmt.Printf("ERROR : %s\n", err1.Error())    return}fmt.Printf("URL : %s, Size: %sn", results[0]["_id"], results[0]["size"])不幸的是,这不起作用,我得到以下输出:ERROR : Unsupported document type for unmarshalling: []bson.M只是想知道我做错了什么以及如何解决这个问题。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 285 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信