package db import ( "fmt" ) // ver00005 修正MarchViewID type ver00005 struct { } // Version 手动自增,必需唯一 func (ver00005) Version() int32 { return 5 } func (ver00005) Enable() bool { return false } func (p ver00005) Execute() bool { // clog.Infof("Execute %v, nodeID = %s", p.Version(), capp.NodeID()) // ctx := context.Background() // mapMarchCollection := dbComponent.DB().Collection(nameDB.Table_MapMarch) // filter := bson.M{} // cur, err := mapMarchCollection.Find(ctx, filter) // if err != nil { // clog.Errorf("[migrator - %d] find map tile table error: %v", p.Version(), err) // return false // } // list := []*MapMarchTable{} // err = cur.All(ctx, &list) // if err != nil { // clog.Errorf("[migrator - %d] find map march table error: %v", p.Version(), err) // return false // } // for _, marchTable := range list { // marchTable.UpdateMarchView() // } // // 构建批量更新对象 // models := make([]mongo.WriteModel, 0, len(list)) // for _, marchTable := range list { // tableBytes, err := bson.Marshal(marchTable) // if err != nil { // clog.Errorf("[migrator - %d] marshal map march table error: %v", p.Version(), err) // return false // } // // set update // update := bson.D{{Key: "$set", Value: bson.Raw(tableBytes)}} // // set filter // filter := bson.M{ // "_id": marchTable.PrimaryValue(), // 利用自带的_id主键进行条件过滤 // } // // build *mongo.UpdateOneModel // model := mongo.NewUpdateOneModel().SetFilter(filter).SetUpdate(update).SetUpsert(true) // models = append(models, model) // } // ops := options.BulkWrite().SetOrdered(false) // result, err := mapMarchCollection.BulkWrite(context.TODO(), models, ops) // if err != nil { // clog.Errorf("[migrator - %d] bulk write map march table error: %v", p.Version(), err) // return false // } // clog.Infof("[migrator - %d] bulk write map march table success: %d", p.Version(), result.ModifiedCount) return true } func (p ver00005) Desc() string { return fmt.Sprintf("[migrator - %d] Fix MarchViewID", p.Version()) }