12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package main
- import (
- "app.yhyue.com/moapp/jybase/mongodb"
- "fmt"
- "go.mongodb.org/mongo-driver/bson"
- "log"
- )
- var (
- MongoTool *mongodb.MongodbSim
- )
- func init() {
- MongoTool = &mongodb.MongodbSim{
- MongodbAddr: "172.17.4.86:27080", //172.17.4.85:27080
- Size: 10,
- DbName: "jyqyfw",
- }
- MongoTool.InitPool()
- }
- func main() {
- sess := MongoTool.GetMgoConn()
- defer MongoTool.DestoryMongoConn(sess)
- //ch := make(chan bool, 2)
- //wg := &sync.WaitGroup{}
- idsMap := make(map[string]string)
- //q := bson.M{"_id": bson.M{"$gte": mongodb.StringTOBsonId("6693f6000000000000000000")}}
- f := bson.M{"id": 1, "ruleid": 1, "appid": 1, "rulename": 1}
- query := sess.DB("jyqyfw").C("usermail").Find(nil).Select(f).Sort("id").Iter()
- count := 0
- for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
- if count%20000 == 0 {
- log.Println("current ---", count, len(idsMap))
- }
- //ch <- true
- //wg.Add(1)
- func(tmp map[string]interface{}) {
- //defer func() {
- //<-ch
- //wg.Done()
- //}()
- appid := tmp["appid"].(string)
- id := tmp["id"].(string)
- if appid == "jyGQ1XQQsEAwNeSENOFR9D" {
- return
- }
- if tmp["ruleid"] != nil {
- ruleid := tmp["ruleid"].(string)
- //rulename := tmp["rulename"].(string)
- key := fmt.Sprintf("%s-%s-%s", appid, ruleid, id)
- if bid := idsMap[key]; bid != "" {
- MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
- }
- idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
- } else if tmp["rulename"] != nil {
- rulename := tmp["rulename"].(string)
- key := fmt.Sprintf("%s-%s-%s", appid, rulename, id)
- if bid := idsMap[key]; bid != "" {
- MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
- }
- idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
- } else {
- key := fmt.Sprintf("%s-%s", appid, id)
- if bid := idsMap[key]; bid != "" {
- MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
- }
- idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
- }
- }(tmp)
- tmp = make(map[string]interface{})
- }
- //wg.Wait()
- log.Println("over ---", count)
- }
|