Мне нужно выполнить такой запрос. Выполнение этого запроса вручную возвращает OK с upsertedCount = 1, когда ключ не существует
db.test.update({Key: 'random-id'}, {$inc: {Version: 1}},{upsert: true})
Я пытаюсь преобразовать его в mongodb golang версию ниже
client, _ := mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:27017/"))
coll := client.Database("test").Collection("test")
filter := bson.D{bson.E{"Key", "random-id"}}
docs := bson.D{bson.E{"$inc", bson.E{"Version", 1}}}
upsert := true
result, err := coll.UpdateOne(
context.TODO(),
filter, docs,
&options.UpdateOptions{Upsert: &upsert})
if err != nil {
panic(err)
}
fmt.Print(result)
К сожалению, этот запрос возвращает ошибка
multiple write errors: [{write errors: [{Cannot increment with non-numeric argument: {key: "Version"}}]}, {<nil>}]
Почему не работает? Кажется, что драйвер пытается увеличить его, не отправляя его в mon go
Edit:
- измените регистр схемы на Upper, чтобы следовать go код
- Использовать более простую версию кода