2016-02-26 5 views
0

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

{ 
    "_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) 

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

ответ

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) 
+0

спасибо братан, но его возвращающие ошибки, как: - бэкэнд/модели/processmodel.go: 30: ошибка синтаксиса : неожиданный:, ожидающий) бэкэнд/модели/processmodel.go: 31: заявление без декларации вне тела функции любая идея ???? –

+0

Привет, вы можете показать мне строку 30 и строку 31? – Specode

+0

// Первая строка - строка 30 //c.Find(bson.M{"company_name ":" bank "}," process ": bson.M {" $ elemMatch ": bson.M {" process.process_name " : «Converted»}}) // colQuerier = bson.M {"company_name": Company} // \t change: = bson.M {"$ push": bson.M {"process": Process [0] .ProcessItemMinimal}} // \t err: = c.Update (colQuerier, change) @Specode .. Извините за задержку. спасибо за помощь. Первая строка - это запрос, который вы мне дали. Я попробовал это так, как ты мне дал. но это тоже не сработало. –

Смежные вопросы