调用Find mgo时参数过多

huangapple go评论73阅读模式
英文:

too many arguments in call to Find 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)

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

英文:

I was trying to search a collection with multiple field conditions using $elemMatch operator. Then I encountered an error "too many arguments in call to c.Find". Document structure is as follows:-

{
    "_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
        }
    ]
}

My query is as follows:-

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)

What is wrong with my query? Is it any syntax error?

答案1

得分: 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)
英文:

Because c.Find(https://godoc.org/gopkg.in/mgo.v2#Collection.Find) only allow one param

You can try

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

huangapple
  • 本文由 发表于 2016年2月26日 13:20:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/35644058.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定