У меня проблемы с запросами UUID, хранящимися в моей коллекции mongo. Монго структура документа выглядит так:
{
"_id": {
"$oid": "5acf7faff5f02b0001e9fda1"
},
"j": {
"$uuid": "d0459793-3ec0-71fd-319e-b959af081db6"
},
"s": "ok",
"creation_date": {
"$date": "2018-04-12T15:47:59.003Z"
}
}
Я хочу получить документ, передавая j
uuid (не ObjectID). Я создаю монго-соединение и получаю свою коллекцию, затем пытаюсь выполнить этот запрос:
import (
mgo "gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
...
var job *Job
uid, _ := uuid.FromString(m.ID)
e := c.Find(bson.M{"j": uid.String()}).One(&job)
но e
всегда равно "not found".
m.ID
- это строка uuid без тире -
, поэтому я конвертирую ее в uuid.UUID
.
Другие запросы, например c.Find(bson.M{"s": "ok"}).All(&jobs)
, работают нормально, поэтому я уверен в связи и сборе.
Использование golang 1.11 и mongodb 3.6.
UPDATE:
Когда я делаю db.mycol.find()
из консоли Монго, в результате появляется список документов, таких как:
{ "_id" : ObjectId("5acf5b0ac7fb0700010040ac"), "j" : BinData(3,"amOjUW1oQQ6dNsvLrQuDhg=="), "s" : "ok", "creation_date" : ISODate("2018-04-12T13:11:38.365Z") }
поэтому я попытался изменить свой запрос следующим образом:
e := c.Find(bson.M{"j": bson.Binary{0x03, []byte(m.ID)}}).One(&job)
И все равно документ не возвращается.