mongo-go-driver найти документ по _id - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь найти документ по его автоматически сгенерированному полю _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": ObjectID("5c7452c7aeb4c97e0cdb75bf")

Если вам интересно, почему я беспокоюсь о RawValue, янашел примеры использования bson.EC.ObjectID, но пакет bson, похоже, не имеет типа EC, также я нашел несколько примеров, в которых упоминается пакет github.com/mongodb/mongo-go-driver/bson/objectid, но я не смог найти этот пакетили.Ранее я разрабатывал с mgo, но я новичок в mongo-go-driver, так что если вы можете указать простой способ объявить ObjectID.

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Вы можете использовать что-то вроде этого:

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)
}
0 голосов
/ 12 марта 2019

Как упомянул @Carlos, я изменил свой код, и все работает хорошо.

objID, _ := primitive.ObjectIDFromHex("5c7452c7aeb4c97e0cdb75bf")
value := collection.FindOne(ctx, bson.M{"_id": objID})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...