21天精品區塊鏈課程免費學習,深入實戰行家帶路,助力開發人員輕鬆玩轉區塊鏈!>>>
golang mongodb插入insert資料demo
插入資料庫通常情況下針對每個表建立一個結構體,但是mongodb是schemaless,文檔資料庫,對欄位沒有嚴格要求
package mainimport ("fmt""gopkg.in/mgo.v2""io/ioutil""net/http""encoding/json"//"time")type Count struct {I int}var session *mgo.Sessionvar err errorfunc main() {session, err = mgo.Dial("127.0.0.1:27017")if err != nil {fmt.Print(err)}defer session.Close()http.HandleFunc("/insert",insert)http.ListenAndServe(":9999",nil)////b := session.DB("testdb").C("test1").Bulk() // 第二種//c := session.DB("testdb").C("test1") //第一種//start := time.Now()//for i := 0; i < 100000; i++ {////b.Insert(&Count{i}) //第二種//c.Insert(&Count{i}) //第一種//}////b.Run() // 第二種//duration := time.Since(start)//fmt.Printf("insert 10w: %v", duration.Seconds()*1e6/float64(1000))}func insert(w http.ResponseWriter,r *http.Request){s, _ := ioutil.ReadAll(r.Body)var p []interface{}err := json.Unmarshal([]byte(s), &p)if err!=nil{fmt.Fprint(w,"json格式錯誤")fmt.Println(err)return}c := session.DB("testdb").C("test1") //第一種//start := time.Now()for _,mp :=range p{//mp["time"]=starterr=c.Insert(&mp) //第一種if err != nil {fmt.Println(mp)panic(err)}fmt.Println(err)}fmt.Println( p )}func test() {//Create the Json stringvar data = ` { "id": 12423434, "Name": "Fernando" } `//Marshal the json to a mapvar result map[string]interface{}err := json.Unmarshal([]byte(data), &result)if err != nil {fmt.Println(err.Error())return}fmt.Println(result)}