英文:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论