golang mongodb(mgo)未插入文档

Im having issues with persisting a golang struct in mongodb using mgo.

type AN_Track_Log struct {
    Id                       bson.ObjectId `bson:"_id,omitempty"`
    user_session_id_str      string       `bson:"user_session_id_str"`

    googleanaly_pixel_id_str string `bson:"googleanaly_pixel_id_str"`
    perfaud_pixel_id_str     string `bson:"perfaud_pixel_id_str"`
    site_id_str              string `bson:"site_id_str"`
    metric_str               string `bson:"metric_str"`
    value_str                string `bson:"value_str"`
    event_str                string `bson:"event_str"`
    location_id_str          string `bson:"location_id_str"`
    referer_str              string `bson:"referer_str"`
    track_origin_str         string `bson:"track_origin_str"`
    fingerprint_str          string `bson:"fingerprint_str"`
    ...
}

p_track_log.Id = bson.NewObjectId()
err := p_mongodb_coll.Insert(&p_track_log)

the problem is that when the Insert() call completes, the only thing thats persisted in the DB is an empty doc

{u'_id': ObjectId('561809d20037873154000003')}

I check that the struct fields are indeed set, and not empty. Any ideas as to why this is happening. Hints are appreciated :) thank you

1个回答



您需要 </ p>

  type AN_Track_Log结构{
Id bson.ObjectIdbson:“ _ id,omitempty”

User_session_id_str字符串bson:“ user_session_id_str”

Googleanaly_pixel_id_str字符串bson:“ googleanaly_pixel_id_str”
...
}
</ code> </ pre>
</ div>

展开原文

原文

You need to export the fields by starting the field name with a capital letter.

type AN_Track_Log struct {
  Id                       bson.ObjectId `bson:"_id,omitempty"`
  User_session_id_str      string       `bson:"user_session_id_str"`

  Googleanaly_pixel_id_str string `bson:"googleanaly_pixel_id_str"`
  ...
}

dsu89430
dsu89430 可以使用字段标签指定数据库中的字段名称。 字段标记中使用的名称大小写没有限制。 此答案中的代码在数据库中使用小写的字段名称。
大约 2 年之前 回复
duanliang5051
duanliang5051 因此不可能有一个包含所有小写字符的字段? 这不是图书馆的巨大限制吗? 您如何处理字段名称均为小写的现有数据?
大约 2 年之前 回复
duansao20000508
duansao20000508 第一个字符必须为大写。 所有其他字符可以是大写或小写。
大约 2 年之前 回复
dongshimao7115
dongshimao7115 如果您想要一个带有大写字母的字段怎么办?
大约 2 年之前 回复
dphphvs496524
dphphvs496524 要以此为基础-您应该按照Go约定-UserSessionID或GoogleAnalyPixelID命名字段-如果数据库需要使用snake_case,请使用struct标记(如您所愿)。
接近 5 年之前 回复
douhe6181
douhe6181 该死的,对! mgo是一个外部软件包:)谢谢
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问