Frage: Ich möchte Daten nach _id finden. Ich weiß, dass diese Daten existieren und dass diese _id existiert (ich habe es mit Pymongo getestet). Der folgende Code findet es jedoch nicht:
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() // Optional. Switch the session to a monotonic behavior. session.SetMode(mgo.Monotonic, true) c := session.DB("id_bag").C("id_cookie") data := id_cookie{} err2 := c.FindId(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).One(&data) if (err2 != nil){ Info.Println("error") Info.Println(err2) } Info.Println(data) return data.IdCookie }
Antwort: Es gibt zwei Möglichkeiten, mithilfe von Collection.FindId() oder Collection.Find() nach ID zu suchen.
Verwendung von Collection.FindId(): Übergeben Sie nur die ID value.
err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)
Mit Collection.Find(): Geben Sie einen Wert mit dem Feldnamen an.
err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}). One(&data)
Wenn Sie immer noch 0 als Wert von erhalten id_cookie.IdCookie bedeutet, dass das Feld im Dokument, das diese ID enthält, einen anderen Namen hat. Verwenden Sie Struktur-Tags, um es entsprechend zuzuordnen.
type id_cookie struct { IdCookie int `bson:"myid"` }
Um Leistungsprobleme zu vermeiden, stellen Sie einmal eine Verbindung zum MongoDB-Server her und verwenden Sie die Sitzung erneut. Weitere Einzelheiten finden Sie im folgenden Thread: [mgo – Abfrageleistung scheint durchweg langsam (500–650 ms)](https://groups.google.com/forum/#!topic/golang-nuts/8_EH7KO_S4Y).
Das obige ist der detaillierte Inhalt vonWarum kann mein Go-Code, der mgo verwendet, ein MongoDB-Dokument nicht anhand seiner _id finden, obwohl die _id vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!