Для того чтобы корректно занести объект с полем ObjectID в MongoDB, используя Golang mongo-driver, необходимо выполнить следующие шаги:
1. Установите пакет mongo-driver для работы с MongoDB в вашем проекте. Для этого выполните команду: go get go.mongodb.org/mongo-driver
2. Подключитесь к вашей MongoDB базе данных с помощью метода mongo.Connect()
или mongo.NewClient()
. Полученный клиент используйте для создания контекста запроса.
client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017")) if err != nil { log.Fatal(err) } ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() err = client.Connect(ctx) if err != nil { log.Fatal(err) }
3. Ваша структура объекта должна содержать поле с типом primitive.ObjectID
. Импортируйте этот тип из пакета go.mongodb.org/mongo-driver/bson/primitive
.
import "go.mongodb.org/mongo-driver/bson/primitive" type Person struct { ID primitive.ObjectID `bson:"_id,omitempty"` Name string `bson:"name"` Email string `bson:"email"` }
4. Для добавления объекта в коллекцию MongoDB используйте метод Collection.InsertOne()
и передайте контекст, коллекцию и ваш объект. Метод вернет результат операции, включая созданный ObjectID.
collection := client.Database("mydb").Collection("people") person := Person{ Name: "John Doe", Email: "[email protected]", } result, err := collection.InsertOne(ctx, person) if err != nil { log.Fatal(err) } insertedID := result.InsertedID.(primitive.ObjectID) fmt.Println("Inserted person with ID:", insertedID.Hex())
Обратите внимание, что поле ID
в структуре с типом primitive.ObjectID
помечено тегом bson:"_id,omitempty"
. Это гарантирует, что при вставке нового документа MongoDB автоматически сгенерирует новый ObjectID, если поле ID
не задано.
Таким образом, вы можете корректно занести объект с полем ObjectID в MongoDB, используя Golang mongo-driver.