MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Rechercher par identifiant avec mgo

Soit vous utilisez Collection.FindId() puis vous ne transmettez que la valeur id, ou vous utilisez Collection.Find() puis vous devez également spécifier une valeur avec le nom du champ :

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

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

Si vous n'obtenez aucune erreur, cela signifie que le document est trouvé.

Si vous voyez toujours 0 imprimé (comme la valeur de id_cookie.IdCookie champ), cela signifie que le champ du document contenant cet identifiant a un nom différent.

Utilisez des balises struct pour indiquer comment il est stocké dans votre MongoDB. Par exemple. si dans votre MongoDB il s'appelle "myid" , vous pouvez le mapper comme ceci :

type id_cookie struct {
    IdCookie int `bson:"myid"`
}

Notez également que vous ne devez pas vous connecter au serveur MongoDB chaque fois que vous souhaitez interroger certaines données, mais vous connecter une seule fois et simplement réutiliser la session. pour plus de détails, voir :mgo - les performances des requêtes semblent constamment lentes (500-650 ms)