调用 Find mgo 时参数过多

too many arguments in call to Find mgo

我试图使用 $elemMatch 运算符搜索具有多个字段条件的集合。然后遇到错误"too many arguments in call to c.Find"。文档结构如下:-

{
    "_id" : ObjectId("56cfca4bf23e4e2859257425"),
    "company_name" : "bank",
    "admin" : {
        "email" : "xyz@bank.com",
        "fullname" : "xyz"
    },
    "process" : [ 
        {
            "process_name" : "Enquiry",
            "processtype" : 0,
            "sortorder" : 0
        }, 
        {
            "process_name" : "Converted",
            "processtype" : 1,
            "sortorder" : 1
        }
    ]
}

我的查询如下:-

colQuerier := bson.M{"company_name": "bank"}
match := bson.M {"process": bson.M {"$elemMatch": bson.M{"process.process_name":"Converted"}}}
err := c.Find(colQuerier,match).Sort("-id").All(&results)

我的查询有什么问题?是语法错误吗?

因为c.Find(https://godoc.org/gopkg.in/mgo.v2#Collection.Find)只允许一个参数

你可以试试

query := bson.M{
    "company_name": "bank",
    "process": bson.M{
        "$elemMatch": bson.M{"process.process_name":"Converted"}
    }
}
err := c.Find(query).Sort("-id").All(&results)