123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package main
- import (
- "strings"
- "sync"
- "log"
- "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/mongodb"
- )
- var (
- Mgo *mongodb.MongodbSim
- Mgos *mongodb.MongodbSim
- )
- func init() {
- Mgo = mongodb.NewMgoWithUser("172.17.189.140:27080,172.17.189.141:27081", "bidding", "root", "top@123", 50)
- Mgos = mongodb.NewMgo("172.17.4.85:27080", "xzh", 50)
- }
- func main() {
- sess := Mgo.GetMgoConn()
- defer Mgo.DestoryMongoConn(sess)
- q := map[string]interface{}{}
- it := sess.DB("qfw").C("bidding").Find(&q).Sort("_id").Iter()
- pool := make(chan bool, 10)
- wg := &sync.WaitGroup{}
- total := 0
- for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
- if total%1000 == 0 {
- log.Println("cur index ", total, tmp["_id"])
- }
- pool <- true
- wg.Add(1)
- go func(tmp map[string]interface{}) {
- defer func() {
- <-pool
- wg.Done()
- }()
- // data := map[string]interface{}{}
- buyerclass := common.ObjToString(tmp["buyerclass"])
- tag_subinformationMap := map[string]string{}
- buyerclassMap := map[string]string{}
- property_formMap := map[string]string{}
- if buyerclass != "" {
- buyerclassMap[buyerclass] = "1"
- }
- if tmp["tag_subinformation"] != nil {
- tag_subinformation := common.ObjArrToStringArr(tmp["tag_subinformation"].([]interface{}))
- for _, v := range tag_subinformation {
- tag_subinformationMap[v] = "1"
- }
- }
- if tmp["tag_subinformation_ai"] != nil {
- tag_subinformation_ai := common.ObjArrToStringArr(tmp["tag_subinformation_ai"].([]interface{}))
- for _, v := range tag_subinformation_ai {
- tag_subinformationMap[v] = "1"
- }
- }
- if tmp["property_form"] != nil {
- property_form := common.ObjArrToStringArr(tmp["property_form"].([]interface{}))
- for _, v := range property_form {
- property_formMap[v] = "1"
- }
- }
- buyer := common.ObjToString(tmp["buyer"])
- agency := common.ObjToString(tmp["buyer"])
- s_winner := common.ObjToString(tmp["s_winner"])
- buyerclassMap1, tag_subinformationMap1, property_formMap1 := buyerclassMap, tag_subinformationMap, property_formMap
- tag_subinformationMap2, property_formMap2 := tag_subinformationMap, property_formMap
- getname(buyer, buyerclassMap1, tag_subinformationMap1, property_formMap1)
- getname1(agency, tag_subinformationMap2, property_formMap2)
- for _, v := range strings.Split(s_winner, ",") {
- tag_subinformationMap3, property_formMap3 := tag_subinformationMap, property_formMap
- getname1(v, tag_subinformationMap3, property_formMap3)
- }
- }(tmp)
- tmp = make(map[string]interface{})
- }
- wg.Wait()
- log.Println("is over ~ ", total)
- }
- func getname(name string, buyerclassMap, tag_subinformationMap, property_formMap map[string]string) {
- if name != "" {
- data := map[string]interface{}{}
- bd, ok := Mgos.FindOne("label", map[string]interface{}{"name": name})
- if ok && bd != nil && len(*bd) > 0 {
- if (*bd)["buyerclass"] != nil {
- if buyerclass1, oks := (*bd)["buyerclass"].(map[string]string); oks {
- for k, _ := range buyerclass1 {
- buyerclassMap[k] = "1"
- }
- } else if buyerclass1, oks := (*bd)["buyerclass"].(map[string]interface{}); oks {
- for k, _ := range buyerclass1 {
- buyerclassMap[k] = "1"
- }
- }
- }
- if (*bd)["tag_subinformation"] != nil {
- if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]string); oks {
- for k, _ := range tag_subinformation1 {
- tag_subinformationMap[k] = "1"
- }
- } else if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]interface{}); oks {
- for k, _ := range tag_subinformation1 {
- tag_subinformationMap[k] = "1"
- }
- }
- }
- if (*bd)["property_form"] != nil {
- if property_form1, oks := (*bd)["property_form"].(map[string]string); oks {
- for k, _ := range property_form1 {
- property_formMap[k] = "1"
- }
- } else if property_form1, oks := (*bd)["property_form"].(map[string]interface{}); oks {
- for k, _ := range property_form1 {
- property_formMap[k] = "1"
- }
- }
- }
- if len(buyerclassMap) > 0 {
- data["buyerclass"] = buyerclassMap
- }
- if len(tag_subinformationMap) > 0 {
- data["tag_subinformation"] = tag_subinformationMap
- }
- if len(property_formMap) > 0 {
- data["property_form"] = property_formMap
- }
- if len(data) > 0 {
- Mgos.Update("label", map[string]interface{}{"name": name}, map[string]interface{}{"$set": data}, false, false)
- }
- } else {
- data["name"] = name
- if len(buyerclassMap) > 0 {
- data["buyerclass"] = buyerclassMap
- }
- if len(tag_subinformationMap) > 0 {
- data["tag_subinformation"] = tag_subinformationMap
- }
- if len(property_formMap) > 0 {
- data["property_form"] = property_formMap
- }
- if len(data) > 0 {
- Mgos.Save("label", data)
- }
- }
- }
- }
- func getname1(name string, tag_subinformationMap, property_formMap map[string]string) {
- if name != "" {
- data := map[string]interface{}{}
- bd, ok := Mgos.FindOne("label", map[string]interface{}{"name": name})
- if ok && bd != nil && len(*bd) > 0 {
- if (*bd)["tag_subinformation"] != nil {
- if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]string); oks {
- for k, _ := range tag_subinformation1 {
- tag_subinformationMap[k] = "1"
- }
- } else if tag_subinformation1, oks := (*bd)["tag_subinformation"].(map[string]interface{}); oks {
- for k, _ := range tag_subinformation1 {
- tag_subinformationMap[k] = "1"
- }
- }
- }
- if (*bd)["property_form"] != nil {
- if property_form1, oks := (*bd)["property_form"].(map[string]string); oks {
- for k, _ := range property_form1 {
- property_formMap[k] = "1"
- }
- } else if property_form1, oks := (*bd)["property_form"].(map[string]interface{}); oks {
- for k, _ := range property_form1 {
- property_formMap[k] = "1"
- }
- }
- }
- if len(tag_subinformationMap) > 0 {
- data["tag_subinformation"] = tag_subinformationMap
- }
- if len(property_formMap) > 0 {
- data["property_form"] = property_formMap
- }
- if len(data) > 0 {
- Mgos.Update("label", map[string]interface{}{"name": name}, map[string]interface{}{"$set": data}, false, false)
- }
- } else {
- data["name"] = name
- if len(tag_subinformationMap) > 0 {
- data["tag_subinformation"] = tag_subinformationMap
- }
- if len(property_formMap) > 0 {
- data["property_form"] = property_formMap
- }
- if len(data) > 0 {
- Mgos.Save("label", data)
- }
- }
- }
- }
|