|
@@ -2,9 +2,9 @@ package main
|
|
|
|
|
|
import (
|
|
|
"app.yhyue.com/moapp/jybase/mongodb"
|
|
|
+ "fmt"
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
|
"log"
|
|
|
- "sync"
|
|
|
)
|
|
|
|
|
|
var (
|
|
@@ -23,27 +23,57 @@ func init() {
|
|
|
func main() {
|
|
|
sess := MongoTool.GetMgoConn()
|
|
|
defer MongoTool.DestoryMongoConn(sess)
|
|
|
- ch := make(chan bool, 2)
|
|
|
- wg := &sync.WaitGroup{}
|
|
|
+ //ch := make(chan bool, 2)
|
|
|
+ //wg := &sync.WaitGroup{}
|
|
|
|
|
|
- q := bson.M{"_id": bson.M{"$gte": mongodb.StringTOBsonId("6693f6000000000000000000")}}
|
|
|
- query := sess.DB("jyqyfw").C("usermail").Find(q).Iter()
|
|
|
+ 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%2000 == 0 {
|
|
|
- log.Println("current ---", count)
|
|
|
+ if count%20000 == 0 {
|
|
|
+ log.Println("current ---", count, len(idsMap))
|
|
|
}
|
|
|
- ch <- true
|
|
|
- wg.Add(1)
|
|
|
- go func(tmp map[string]interface{}) {
|
|
|
- defer func() {
|
|
|
- <-ch
|
|
|
- wg.Done()
|
|
|
- }()
|
|
|
+ //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()
|
|
|
+ //wg.Wait()
|
|
|
log.Println("over ---", count)
|
|
|
}
|