Heim > Backend-Entwicklung > Golang > Array im Mongdbo-Dokument aktualisieren

Array im Mongdbo-Dokument aktualisieren

王林
Freigeben: 2024-02-09 14:18:19
nach vorne
971 Leute haben es durchsucht

更新 mongdbo 文档中的数组

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.

Frageninhalt

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"`
}
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

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

}
Nach dem Login kopieren

Ich erhalte ständig die Meldung „Kein passendes Dokument zum Aktualisieren gefunden“

Lösung

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
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage