mongodb mgo的存储多维对象的问题?
想要保存如下类似的数据
{"_ibj_id":"1","url_id":'1',"url":{"0":"http://0.com","1":"http:://1.com"}}但是mongodb最终保存的数据
看下面的代码
/** * 采集120ask.com */ package main import ( "fmt" "github.com/PuerkitoBio/goquery" //"github.com/axgle/mahonia" "labix.org/v2/mgo" "strconv" ) //数据库 type db_list struct { Url_id int Url map[int]string } //采集第一步,进行采集网址列表 //http://www.120ask.com/list/all/1628644/ func list(table *mgo.Collection) { var doc *goquery.Document var e error for i := 1628644; i > 1628643; i-- { //进行采集列表,保存到mongodb数据库. if doc, e = goquery.NewDocument("http://www.120ask.com/list/all/" + strconv.Itoa(i)); e != nil { panic(e.Error()) } var save_list db_list save_list.Url_id = i save_list.Url = make(map[int]string) //fmt.Println("%s", doc.Text()) doc.Find(".q-quename").Each(func(n int, s *goquery.Selection) { href, isTrue := s.Attr("href") if isTrue { save_list.Url[n] = href fmt.Println("%D : %s", n, save_list.Url[n]) } }) fmt.Println("%D", len(save_list.Url)) //保存到mongodb数据库 table.Insert(save_list) } } func main() { //连接mongodb数据库 var db *mgo.Database session, err := mgo.Dial("127.0.0.1") if err != nil { panic(err) } defer session.Close() db = session.DB("120ask") //fmt.Printf("%Tn", db.C("list")) /* var doc *goquery.Document var e error enc := mahonia.NewDecoder("gbk") if doc, e = goquery.NewDocument("http://www.ali213.net"); e != nil { panic(e.Error()) } str, _ := doc.Html() fmt.Printf(enc.ConvertString(str)) */ list(db.C("list")) }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
结构成员首字母大写,试试看。
你指的多维数组是?
field : [[123, 234], [345, 456], [567,678]]
or
field : [{a:123, b:234}, {a:345, b:456}, {a:567,b:678}]
它存储的标准的JSON,也就是JSON能表达的,它都能存储。
golang 目测好亲切。。。多维数组没试过 唉。。。
你这是啥语言我没看懂。
但是你描述的文档是可以保存的。
但是MongoDB没有自增的键,url中0,1需要你自己用程序控制。
你这是啥语言我没看懂。
但是你描述的文档是可以保存的。
但是MongoDB没有自增的键,url中0,1需要你自己用程序控制。