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

在 golang/mongodb 聚合查询中缺少复合文字中的类型

在 golang/mongodb 聚合查询中缺少复合文字中的类型

Go
慕莱坞森 2022-01-04 11:05:14
我想在 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}}},在这一行。我现在该怎么办?
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

您的 $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{} 的别名)


查看完整回答
反对 回复 2022-01-04
?
慕姐8265434

TA贡献1813条经验 获得超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}},

}


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

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