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

我想在 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}}},

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


慕莱坞森
浏览 260回答 2
2回答

千万里不及你

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

慕姐8265434

这样做我得到了想要的输出。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}},}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go