web-dev-qa-db-fra.com

mongo-go-driver trouver un document par _id

J'essaie de trouver un document par son champ _id généré automatiquement. Le code ci-dessous ne renvoie rien:

var documentID bson.RawValue
documentID.Type = 7
documentID.Value = []byte("5c7452c7aeb4c97e0cdb75bf")
objID := documentID.ObjectID()
value := collection.FindOne(ctx, bson.M{"_id": objID})

La valeur que j'ai fournie est un véritable identifiant de document que j'ai obtenu de Mongo Express

"_id": ObjectID("5c7452c7aeb4c97e0cdb75bf")

Au cas où vous vous demanderiez pourquoi je me dérange avec RawValue, j'ai trouvé des exemples utilisant bson.EC.ObjectID mais le paquet bson ne semble pas avoir le type EC, j'ai également trouvé quelques exemples mentionnant github.com/mongodb/mongo-go-driver/bson/objectid package, mais je n'ai pas pu trouver ce package non plus. J'ai déjà développé avec mgo mais je suis nouveau sur mongo-go-driver, donc si vous pouvez indiquer un moyen facile de déclarer un ObjectID.

6
Serdar Kalaycı

Vous pouvez utiliser quelque chose comme ça:

var userDB user
objectIDS, _ := primitive.ObjectIDFromHex(userID)
collectionUser := dBClient.Database("MyDatabase").Collection("Users")
filter := bson.M{"_id": objectIDS}
err := collectionUser.FindOne(ctx, filter).Decode(&userDB)
if err != nil {
    fmt.Println("errror retrieving user userid : " + userID)
}
2
Tushar Saha