2016-06-29 6 views
1

Итак, у меня есть проблема, и несколько руководств о том, как ее исправить. Мне нужна помощь в определении того, какой из них действительно будет работать, и как его выполнить.Вставить в MongoDB и сохранить ObjectID?

Я программирую в GoLang и используя пакет mgo для взаимодействия с MongoDB. На базовом уровне мне нужно вставить запись в коллекцию в Mongo, а также получить доступ к ObjectID этой записи.

Моим первым решением было бы найти запись, которая соответствует всем данным, которые я только что вставил, но могут быть дубликаты. Мне нужна ТОЧНАЯ запись.

Во-вторых, я бы сделал поле в каждой записи уникальной, но я не хочу бесполезных данных там, и я также запускаю это одновременно, что может вызвать проблемы, если я пытаюсь сделать вещи уникальными yadda ядд.

В-третьих, есть функция NewObjectID() в mgo, но я не знаю, как убедиться, что это уникальный идентификатор.

Есть ли потенциал в любом из этих проводов или как еще я могу справиться с этим?

ответ

1

Создать идентификатор с NewObjectId. Пакет bson гарантирует уникальность идентификатора.

id := bson.NewObjectId() 

Установите идентификатор в документе перед его вставкой. Сохраните поле с именем «_id».

struct MyDoc { 
    ID bson.ObjectId `bson:"_id"` 
    // other fields 
} 

d := &MyDoc{ID: bson.NewObjectId(), /* set other fields */ } 

if err := c.Insert(d); err != nil { 
    // handle error 
} 

Вставленный документ имеет идентификатор id.