main.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package main
  2. import (
  3. "app.yhyue.com/moapp/jybase/mongodb"
  4. "fmt"
  5. "go.mongodb.org/mongo-driver/bson"
  6. "log"
  7. )
  8. var (
  9. MongoTool *mongodb.MongodbSim
  10. )
  11. func init() {
  12. MongoTool = &mongodb.MongodbSim{
  13. MongodbAddr: "172.17.4.86:27080", //172.17.4.85:27080
  14. Size: 10,
  15. DbName: "jyqyfw",
  16. }
  17. MongoTool.InitPool()
  18. }
  19. func main() {
  20. sess := MongoTool.GetMgoConn()
  21. defer MongoTool.DestoryMongoConn(sess)
  22. //ch := make(chan bool, 2)
  23. //wg := &sync.WaitGroup{}
  24. idsMap := make(map[string]string)
  25. //q := bson.M{"_id": bson.M{"$gte": mongodb.StringTOBsonId("6693f6000000000000000000")}}
  26. f := bson.M{"id": 1, "ruleid": 1, "appid": 1, "rulename": 1}
  27. query := sess.DB("jyqyfw").C("usermail").Find(nil).Select(f).Sort("id").Iter()
  28. count := 0
  29. for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
  30. if count%20000 == 0 {
  31. log.Println("current ---", count, len(idsMap))
  32. }
  33. //ch <- true
  34. //wg.Add(1)
  35. func(tmp map[string]interface{}) {
  36. //defer func() {
  37. //<-ch
  38. //wg.Done()
  39. //}()
  40. appid := tmp["appid"].(string)
  41. id := tmp["id"].(string)
  42. if appid == "jyGQ1XQQsEAwNeSENOFR9D" {
  43. return
  44. }
  45. if tmp["ruleid"] != nil {
  46. ruleid := tmp["ruleid"].(string)
  47. //rulename := tmp["rulename"].(string)
  48. key := fmt.Sprintf("%s-%s-%s", appid, ruleid, id)
  49. if bid := idsMap[key]; bid != "" {
  50. MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
  51. }
  52. idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
  53. } else if tmp["rulename"] != nil {
  54. rulename := tmp["rulename"].(string)
  55. key := fmt.Sprintf("%s-%s-%s", appid, rulename, id)
  56. if bid := idsMap[key]; bid != "" {
  57. MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
  58. }
  59. idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
  60. } else {
  61. key := fmt.Sprintf("%s-%s", appid, id)
  62. if bid := idsMap[key]; bid != "" {
  63. MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
  64. }
  65. idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
  66. }
  67. }(tmp)
  68. tmp = make(map[string]interface{})
  69. }
  70. //wg.Wait()
  71. log.Println("over ---", count)
  72. }