Heim > Backend-Entwicklung > Golang > Warum findet „mgo.FindId' mein MongoDB-Dokument nicht?

Warum findet „mgo.FindId' mein MongoDB-Dokument nicht?

Barbara Streisand
Freigeben: 2024-12-07 18:42:15
Original
241 Leute haben es durchsucht

Why Doesn't `mgo.FindId` Find My MongoDB Document?

Ein Dokument anhand der ID mit mgo finden

Frage:

Im folgenden Codebeispiel , kann ein Datensatz, von dem bekannt ist, dass er in einer MongoDB-Sammlung vorhanden ist, mit der FindId-Methode nicht gefunden werden. Der Code gibt stattdessen einen Nullwert zurück. Was ist das Problem?

type id_cookie struct {
    IdCookie int
}

func get_id_mongo() int {
    session, err := mgo.Dial("127.0.0.1")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    c := session.DB("id_bag").C("id_cookie")
    data := id_cookie{}
    err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)
    if (err2 != nil){
        Info.Println("error")
        Info.Println(err2)
    }
    Info.Println(data)
    return data.IdCookie
}
Nach dem Login kopieren

Antwort:

Das Problem liegt in der Methodensignatur von FindId. Es benötigt nur die ID als Argument, während Find eine Karte erfordert, in der auch der Feldname angegeben ist. Um dies zu beheben, verwenden Sie den folgenden Code:

err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)

// OR
err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).One(&data)
Nach dem Login kopieren

Wenn keine Fehler auftreten, wurde das Dokument erfolgreich gefunden. Wenn das IdCookie-Feld immer noch Null ist, wird es möglicherweise unter einem anderen Namen in MongoDB gespeichert. Verwenden Sie Struktur-Tags, um es korrekt zuzuordnen:

type id_cookie struct {
    IdCookie int `bson:"myid"`
}
Nach dem Login kopieren

Darüber hinaus wird empfohlen, eine einzelne Verbindung zu MongoDB herzustellen und diese wiederzuverwenden, anstatt für jede Abfrage eine neue Verbindung zu erstellen. Weitere Informationen zur Optimierung der Abfrageleistung finden Sie in der verlinkten Diskussion.

Das obige ist der detaillierte Inhalt vonWarum findet „mgo.FindId' mein MongoDB-Dokument nicht?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage