Я хочу удалить элемент многоуровневого массива. Мои структуры следующие: -
type Company struct {
Id bson.ObjectId `bson:"_id,omitempty"`
CompanyName string
Process []ProcessItem
}
type ProcessItem struct{
SortOrder int
Documents []DocumentTemplate
}
type DocumentTemplate struct {
Id bson.ObjectId `bson:"_id,omitempty"`
TemplateName string
}
Я хочу удалить объект типа DocumentTemplate. DocumentTemplate — это массив структур в ProcessItem, который является массивом структур в структуре Company. У меня есть идентификатор компании (поле структуры Company) и TemplateName (поле структуры DocumentTemplate).
Я попробовал приведенный ниже запрос mgo pull, но он не работает.
c := db.C("company")
pullQuery := bson.M{"process": bson.M{"documents.templatename": "xyz"}}
err := c.Update(bson.M{"_id": "123"}, bson.M{"$pull": pullQuery})
Пожалуйста, укажите на ошибки, которые я сделал здесь. Спасибо.
Изменить: добавление одного примера документа для ясности вопроса.
{
"_id" : ObjectId("573da7dddd73171e42a84045"),
"companyname" : "AAA",
"process" : [
{
"processname" : "Enquiry",
"sortorder" : 0,
"documents" : [
{
"templatename" : "xyz",
"processname" : "Enquiry"
},
{
"templatename" : "ss",
"processname" : "Enquiry"
}
]
},
{
"processname" : "Converted",
"processtype" : 1,
"sortorder" : 2,
"documents" : [
{
"templatename" : "dd",
"processname" : "Converted"
},
{
"templatename" : "fg",
"processname" : "Converted"
}
]
}
]
}
Мне нужно вытащить только одну запись DocumentTemplete, как показано ниже:
{
"templatename" : "xyz",
"processname" : "Enquiry"
}
N.B: TemplateName будет уникальным внутри компании.
TemplateName
уникальным, или один объектCompany
может содержать множествоDocumentTemplate
с одним и тем же именем, и если да, хотите ли вы получить каждый из них? - person John Smith   schedule 20.05.2016