Heim >Backend-Entwicklung >Golang >Array im Mongdbo-Dokument aktualisieren
Der PHP-Editor Yuzai stellt Ihnen in diesem Artikel vor, wie Sie Arrays in MongoDB-Dokumenten aktualisieren. MongoDB ist eine nicht relationale Datenbank, deren Dokumentstruktur sehr flexibel ist und verschiedene Datentypen, einschließlich Arrays, enthalten kann. In der tatsächlichen Entwicklung müssen wir häufig die im Array gespeicherten Daten aktualisieren. In diesem Artikel wird ausführlich erläutert, wie der Update-Operator von MongoDB zum Aktualisieren des Arrays im Dokument verwendet wird, sowie einige häufige Verwendungsszenarien und Vorsichtsmaßnahmen. Unabhängig davon, ob Sie MongoDB-Neuling oder ein erfahrener Entwickler sind, können Sie in diesem Artikel nützliches Wissen und praktische Erfahrungen sammeln.
Ich versuche, ein Array-Element in einem Mongo-Dokument zu aktualisieren.
Ereignis ist das Dokument, ich finde es anhand der Ereignis-ID. Anschließend muss ich anhand des Aufgabennamens ermitteln, welches Objekt im Aufgabenarray geändert werden muss.
Wissen Sie, was ich falsch gemacht habe
Event-Struktur
type event struct { eventid string `json:"eventid" bson:"eventid"` eventowner string `json:"eventowner" bson:"eventowner"` eventtitle string `json:"eventtitle" bson:"eventtitle"` eventdatetime string `json:"eventdatetime" bson:"eventdatetime"` eventlocation eventaddress `json:"eventlocation" bson:"eventlocation"` eventtotalticket int `json:"eventtotalticket" bson:"eventtotalticket"` eventavailableticket int `json:"eventavailableticket" bson:"eventavailableticket"` eventcoverimage string `json:"eventcoverimage" bson:"eventcoverimage"` eventdescription string `json:"eventdescription" bson:"eventdescription"` lat string `json:"lat" bson:"lat"` long string `json:"long" bson:"long"` task []task `json:"task" bson:"task"` }
Aufgabenstruktur:
type task struct { tasktitle string `json:"tasktitle" bson:"tasktitle"` initalbudget float32 `json:"initialbudget" bson:"initialbudget"` supplier string `json:"suppid" bson:"suppid"` agreedprice float32 `json:"agreedprice" bson:"agreedprice"` iscomplete bool `json:"iscomplete" bson:"iscomplete"` }
Das ist es, was ich tun möchte
func (e *EventServiceImpl) UpdateTask(eventid *string, task *models.Task) error { //filter := bson.D{bson.E{Key: "eventid", Value: eventid}, bson.E{Key: "tasktitle", Value: task.TaskTitle}} filter := bson.M{"$and": []bson.M{{"eventid": eventid}, {"task": bson.E{Key: "tasktitle", Value: task.TaskTitle}}}} update := bson.D{bson.E{Key: "$set", Value: bson.D{bson.E{Key: "task", Value: bson.M{"tasktitle": task.TaskTitle, "initialbudget": task.InitalBudget, "suppid": task.Supplier, "agreedprice": task.AgreedPrice, "iscomplete": task.IsComplete}}}}} result, _ := e.eventcollection.UpdateOne(e.ctx, filter, update) if result.MatchedCount != 1 { return errors.New("No matched document found to update") } return nil }
Ich erhalte ständig die Meldung „Kein passendes Dokument zum Aktualisieren gefunden“
Das ist die Lösung
func (e *EventServiceImpl) UpdateTask(eventid *string, task *models.Task) error { filter := bson.M{"eventid": eventid, "task": bson.M{"$elemMatch": bson.M{"tasktitle": task.TaskTitle}}} update := bson.M{"$set": bson.M{"task.$.initialbudget": task.InitalBudget, "task.$.suppid": task.Supplier, "task.$.agreedprice": task.AgreedPrice, "task.$.iscomplete": task.IsComplete}} result, err := e.eventcollection.UpdateOne(e.ctx, filter, update) if err != nil { return err } if result.MatchedCount != 1 { return errors.New("No matched document found to update") } return nil }
Das obige ist der detaillierte Inhalt vonArray im Mongdbo-Dokument aktualisieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!