Du använder antingen Collection.FindId()
och sedan skickar du bara id-värdet, eller så använder du Collection.Find()
och sedan måste du ange ett värde med fältnamnet också:
err2 := c.FindId(bson.ObjectIdHex("58593d1d6aace357b32bb3a1")).One(&data)
// OR
err2 := c.Find(bson.M{"_id": bson.ObjectIdHex("58593d1d6aace357b32bb3a1")}).
One(&data)
Om du inte får några fel, betyder det att dokumentet hittas.
Om du alltid ser 0
skrivs ut (som värdet på id_cookie.IdCookie
fält), det betyder att fältet i dokumentet som innehåller detta ID har ett annat namn.
Använd struct-taggar för att berätta hur det lagras i din MongoDB. T.ex. om det i din MongoDB heter "myid"
, du kan mappa det så här:
type id_cookie struct {
IdCookie int `bson:"myid"`
}
Observera också att du inte ska ansluta till MongoDB-servern varje gång du vill fråga data, istället ansluta en gång och bara återanvända sessionen. för detaljer se:mgo - frågeprestanda verkar konsekvent långsam (500-650 ms)