web-dev-qa-db-ja.com

mongo-go-driverは_idでドキュメントを検索します

自動生成された_idフィールドでドキュメントを検索しようとしています。以下のコードは何も返しません:

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

私が提供した値は、Mongo Expressから取得した実際のドキュメントIDです

"_id": ObjectID("5c7452c7aeb4c97e0cdb75bf")

RawValueに悩む理由がわからない場合は、bson.EC.ObjectIDを使用した例を見つけましたが、bsonパッケージにはECタイプがないようです。また、github.com/mongodb/mongo-go-driverに言及している例もいくつかありました/ bson/objectidパッケージですが、そのパッケージも見つかりませんでした。私は以前mgoで開発しましたが、mongo-go-driverは初めてなので、ObjectIDを宣言する簡単な方法を示すことができます。

6
Serdar Kalaycı

次のようなものを使用できます。

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