load_data.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package main
  2. import (
  3. "time"
  4. //"encoding/json"
  5. "log"
  6. )
  7. //初始加载数据,默认加载最近6个月的数据
  8. func loadData(projectColl string, month int, bCacheRedis bool) {
  9. sess := MongoTool.GetMgoConn()
  10. defer MongoTool.DestoryMongoConn(sess)
  11. q := map[string]interface{}{}
  12. it := sess.DB(MongoTool.DbName).C(projectColl).Find(&q).Iter()
  13. AllIdsMapLock.Lock()
  14. tmp := &ProjectInfo{}
  15. n := 0
  16. for it.Next(tmp) {
  17. n++
  18. if n%1000 == 0 {
  19. log.Println("current", n, "\n", tmp.Id, tmp)
  20. time.Sleep(2 * time.Second)
  21. }
  22. for _, v := range append([]string{tmp.ProjectName}, tmp.MPN...) {
  23. if v != "" {
  24. k := mapPn[v]
  25. if k == nil {
  26. k = &Key{Arr: []string{}}
  27. mapPn[v] = k
  28. }
  29. k.Arr = append(k.Arr, tmp.Id.Hex())
  30. }
  31. }
  32. for _, v := range append([]string{tmp.ProjectCode}, tmp.MPC...) {
  33. if v != "" {
  34. k := mapPc[v]
  35. if k == nil {
  36. k = &Key{Arr: []string{}}
  37. mapPc[v] = k
  38. }
  39. k.Arr = append(k.Arr, tmp.Id.Hex())
  40. }
  41. }
  42. if tmp.Buyer != "" {
  43. k := mapPb[tmp.Buyer]
  44. if k == nil {
  45. k = &Key{Arr: []string{}}
  46. mapPb[tmp.Buyer] = k
  47. }
  48. k.Arr = append(k.Arr, tmp.Id.Hex())
  49. }
  50. AllIdsMap2[tmp.Id.Hex()] = &ID{Id: tmp.Id.Hex(), lastTime: tmp.LastTime, P: tmp}
  51. if bCacheRedis {
  52. //存入redis
  53. }
  54. }
  55. AllIdsMapLock.Unlock()
  56. log.Println("load over")
  57. }