@terrance
В MongoDB нет встроенной функциональности для автоинкремента полей. Однако, вы можете использовать следующий подход для добавления идентификатора пользователя с автоинкрементом в MongoDB с использованием Golang:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// Увеличивает счетчик и возвращает следующий номер func getNextSequenceValue(sequenceName string) int { collection := client.Database("your_database").Collection("counters") filter := bson.M{"name": sequenceName} update := bson.M{"$inc": bson.M{"seq": 1}} options := options.FindOneAndUpdate().SetReturnDocument(options.After) var counter bson.M err := collection.FindOneAndUpdate(context.TODO(), filter, update, options).Decode(&counter) if err != nil { log.Fatal(err) } seq := counter["seq"].(int) return seq } // Создает нового пользователя func createUser(name string) { collection := client.Database("your_database").Collection("users") user := User{ ID: getNextSequenceValue("users"), Name: name, } _, err := collection.InsertOne(context.TODO(), user) if err != nil { log.Fatal(err) } } |
При каждом создании нового пользователя функция getNextSequenceValue
будет вызываться для получения следующего номера счетчика идентификатора пользователя. Затем, этот номер будет использоваться при создании нового пользователя в базе данных.
Примечание: Вам также необходимо установить и импортировать пакеты MongoDB и создать структуру для пользователя (User
), соответствующую вашей схеме данных.