在Golang中汇总查询

时间:2018-08-07 12:58:42

标签: mongodb go aggregation-framework mgo

我需要使用mgo在golang中编写查询,这是mongo中的查询:

db.some.aggregate([
{$match: { "data.id": "11111" }},
    {$project: { 
            _id : 0,
            url : { $concat: [ "https://www.someurl.com/","$data.aID" ]},
       items :{
       "$map":{
                "input":"$data.items",
                "as":"it",
                "in":{
                  "item_title":"$$it.title",                             
                  "item_id":"$$it.id"
               }}}}])

如果您能解决此问题,我将不胜感激。

//对于错误的问题,我深表歉意,以后我将按照说明进行操作,我的问题是$ concat

1 个答案:

答案 0 :(得分:0)

这里的语法很棘手,因为它与JSON类似,但相差很多,令人困惑。

尤其要注意,数组使用花括号分隔符[]bson.M{...},而$concat的值是字符串[]string{...}的数组:

query := []bson.M{ // NOTE: slice of bson.M here
  bson.M{
    "$match": bson.M{"data.id": "11111"},
  },
  bson.M{
    "$project": bson.M{
      "_id": 0,
      "url": bson.M{
        "$concat": []string{ // NOTE: slice of strings here
          "https://www.someurl.com/",
          "$data.aID",
        },
      },
      "items": bson.M{
        "$map": bson.M{
          "input": "$data.items",
          "as":    "it",
          "in":    bson.M{"item_title": "$$it.title", "item_id": "$$it.id"},
        },
      },
    },
  },
}