开发者社区> 问答> 正文

mongodb mgo的存储多维对象

想要保存如下类似的数据
{"_ibj_id":"1","url_id":'1',"url":{"0":"http://0.com","1":"http:://1.com"}}
但是mongodb最终保存的数据

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
}
  
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")
   
    list(db.C("list")) 
}

展开
收起
落地花开啦 2016-02-21 15:25:45 2617 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    你描述的文档是可以保存的。
    但是MongoDB没有自增的键,url中0,1需要你自己用程序控制。

    2019-07-17 18:46:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载