слишком много аргументов в вызове Find mgo

Я пытался найти коллекцию с несколькими полевыми условиями, используя оператор $elemMatch. Затем я столкнулся с ошибкой «слишком много аргументов в вызове c.Find». Структура документа следующая:

{
    "_id" : ObjectId("56cfca4bf23e4e2859257425"),
    "company_name" : "bank",
    "admin" : {
        "email" : "[email protected]",
        "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)

Что не так с моим запросом? Это какая-то синтаксическая ошибка?


person Arjun Ajith    schedule 26.02.2016    source источник


Ответы (1)


Потому что 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)
person Specode    schedule 26.02.2016
comment
Спасибо, братан, но он возвращает такие ошибки, как: - backend/models/processmodel.go:30: синтаксическая ошибка: неожиданно:, ожидание) backend/models/processmodel.go:31: оператор без объявления вне тела функции есть идеи??? ? - person Arjun Ajith; 26.02.2016
comment
//Первая строка — это строка 30 //c.Find(bson.M{company_name: bank},process: bson.M {$elemMatch: bson.M{process.process_name:Converted}}) //colQuerier = bson.M {company_name: Company} // изменение := bson.M {$push: bson.M {process: Process[0].ProcessItemMinimal}} // ошибка := c.Update(colQuerier,change) @Specode.. Извините за человек с задержкой. спасибо за помощь. Первая строка - это запрос, который вы мне дали. Я пробовал так, как вы мне дали. но это тоже не сработало. - person Arjun Ajith; 29.02.2016
comment
Попробуйте исправить строку 30 так: c.Find(bson.M{company_name: bank,process: bson.M {$elemMatch: bson.M{process.process_name:Converted}}}) - person Specode; 29.02.2016