HUH函数
您必须使用$unset更新命令并手动提及数组键名及其索引。更新命令:_, err = collection.UpdateOne( ctx, bson.D{}, // <- Find Parameter bson.D{ {"$unset", bson.D{ {"expenses."+indexToRemove, 1}, // <- Removes `indexToRemove` th element from `expenses` array }}, }, )完整的代码package mainimport ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "time")func main() { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() mClient, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017")) defer func() { if err = mClient.Disconnect(ctx); err != nil { panic(err) } }() collection := mClient.Database("temp").Collection("tmp10") ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second) defer cancel() var result bson.M err = collection.FindOne(ctx, bson.D{}).Decode(&result) fmt.Println(result) indexToRemove := "0" // <- Input index to remove in string or convert it into string _, err = collection.UpdateOne( ctx, bson.D{}, bson.D{ {"$unset", bson.D{ {"expenses."+indexToRemove, 1}, // <- Removes `indexToRemove` th element from `expenses` array }}, }, ) if err != nil { fmt.Println(err) } err = collection.FindOne(ctx, bson.D{}).Decode(&result) fmt.Println(result)}