Możesz użyć Collection.FindId()
a następnie przekazujesz tylko wartość id lub używasz Collection.Find()
a następnie musisz podać również wartość z nazwą pola:
err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)
// OR
err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).
One(&data)
Jeśli nie pojawią się żadne błędy, oznacza to, że dokument został znaleziony.
Jeśli zawsze widzisz 0
drukowane (jako wartość id_cookie.IdCookie
pole), co oznacza, że pole w dokumencie o tym identyfikatorze ma inną nazwę.
Użyj znaczników struct, aby powiedzieć, jak jest przechowywany w twojej MongoDB. Np. jeśli w twojej bazie danych MongoDB nazywa się "myid"
, możesz to zmapować w ten sposób:
type id_cookie struct {
IdCookie int `bson:"myid"`
}
Pamiętaj też, że nie powinieneś łączyć się z serwerem MongoDB za każdym razem, gdy chcesz wysłać zapytanie o jakieś dane, zamiast tego połącz się raz i po prostu ponownie użyj sesji. po szczegóły patrz:mgo - wydajność zapytań wydaje się stale niska (500-650ms)