【问题标题】:missing type in composite literal in golang/mongodb aggregate querygolang/mongodb聚合查询中复合文字中缺少类型
【发布时间】:2016-04-15 04:10:08
【问题描述】:

我想用 golang 编写 mongo 查询。我的 mongo 查询是 -

aggregate([
    {$match: {$and :
        [
            {"stream" : "CS"},
            {"semester" : "sem3"},
            {"section" : "A"}
        ]

    }},
    {$unwind:  '$atndnc'},
    { $group: { _id:{rollno: "$atndnc.rollno",attend:"$atndnc.attend"},count: { $sum: 1 }}},
    {  $project:
    {  _id: '$_id.rollno',
        'attend' : '$_id.attend',
        'count' : '$count'
    }}
])

我的 Go 代码是 -

cond:=[]bson.M{
    bson.M{"$match": bson.M{"$and ":[]interface{}{
        bson.M{"stream" : srchobj.Stream},
        bson.M{"semester" : srchobj.Semester},
        bson.M{"section" : srchobj.Section},
        bson.M{"college_id":srchobj.College_id},
        bson.M{"date":bson.M{"$gt":srchobj.Startdate,"$lt":srchobj.Enddate}}}}},
    bson.M{"$unwind":  "$atndnc"},
    bson.M{"$group":bson.M{"_id":{"rollno":bson.M{"$atndnc.rollno"},"attend":bson.M{"$atndnc.attend"}},"count":bson.M{"$sum":1}}},
    bson.M{"$project":bson.M{"_id":"$_id.rollno","count":"$_id.count"}}}

但它在

中给出错误“复合文字中缺少类型”
    bson.M{"$group":bson.M{"_id":{"rollno":bson.M{"$atndnc.rollno"},"attend":bson.M{"$atndnc.attend"}},"count":bson.M{"$sum":1}}},

在这一行。我现在该怎么办?

【问题讨论】:

    标签: go aggregate


    【解决方案1】:

    您的 $group 查询中的一组大括号缺少类型声明: {"rollno":bson.M{"$atndnc.rollno"},"attend":bson.M{"$atndnc.attend"}}

    我认为应该是: bson.M{"rollno":bson.M{"$atndnc.rollno"},"attend":bson.M{"$atndnc.attend":nil}}

    还有一些其他的初始化,比如只用一个字符串键进行初始化(请记住,bson.M 只是 map[string]interface 的别名{}

    【讨论】:

      【解决方案2】:

      感谢您的支持。我通过这样做得到了所需的输出。

      cond :=[]bson.M{
          bson.M{"$match": bson.M{
                  "stream" : srchobj.Stream,
                  "semester" : srchobj.Semester,
                  "section" : srchobj.Section,
                  "college_id":srchobj.College_id,
                  "date":bson.M{
                      "$gt":srchobj.Startdate,
                      "$lt":srchobj.Enddate},
           },
          },
          bson.M{"$unwind":  "$atndnc"},
          bson.M{"$group":bson.M{
              "_id":bson.M{
                  "rollno":"$atndnc.rollno",
                  "attend":"$atndnc.attend",
                  "name":"$atndnc.name",
                  },
              "count":bson.M{"$sum":1},
              },
          },
          bson.M{"$project":bson.M{
              "rollno":"$_id.rollno",
              "name":"$_id.name",
              "count":"$count",
              "attend":"$_id.attend",
              },
          },
          bson.M{"$sort":bson.M{"rollno":1}},
      }
      

      【讨论】:

        猜你喜欢
        • 2016-07-08
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 2017-06-06
        • 2020-09-24
        • 2019-06-18
        • 2017-08-06
        • 1970-01-01
        相关资源
        最近更新 更多