在调用Find mgo时有太多的争论

时间:2016-02-26 05:20:40

标签: mongodb go mgo

我试图使用$ elemMatch运算符搜索具有多个字段条件的集合。然后我遇到一个错误“调用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)

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

1 个答案:

答案 0 :(得分:2)

因为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)