zoukankan      html  css  js  c++  java
  • golang mongodb (mgo)插入或读取文档的字段值为空(nil)问题解决

    dadream · 2015-12-22 03:00:00 · 1541 次点击 · 预计阅读时间 1 分钟 · 大约1分钟之前 开始浏览    

    这是一个创建于 2015-12-22 03:00:00 的文章,其中的信息可能已经有所发展或是发生改变。

    问题描述

    当使用mgo操作mongodb时,遇到数据插入正常,但是在数据库查看时只能看到objectid被插入了;读取的时候,可以查询到记录,但是读入对象时,却所有的值均为0或者空的情况。

    mongodb文档结构:

    {
            "_id" : ObjectId("502fbbd6fec1300be858767e"),
            "lastName" : "Seba",
            "firstName" : "Jun",
            "inserted" : ISODate("2012-08-18T15:59:18.646Z")
    }

    golang结构:

    type Person struct {
        _id         bson.ObjectId
        firstName  string
        middleName string
        lastName   string
        inserted   time.Time
    }

    原因

    当跨包使用interface定义的字段时,只有一下两种情形,才拥有访问权限。(详见go语言规范

    Exported identifiers

    An identifier may be exported to permit access to it from another package. An identifier is exported if both:

    1. the first character of the identifier's name is a Unicode upper case letter (Unicode class "Lu"); and
    2. the identifier is declared in the package block or it is a field name or method name.

    All other identifiers are not exported.

    解决方案

    将对象字段的首字母大写。如下所示:

    type Person struct {
        Id         bson.ObjectId   "_id"
        FirstName  string          "firstName"
        MiddleName string          "middleName,omitempty"
        LastName   string          "lastName"
        Inserted   time.Time       "inserted"
    }
  • 相关阅读:
    梦的解析 —— 梦知道答案
    梦的解析 —— 梦知道答案
    数学骗术
    数学骗术
    vs 外部依赖项、附加依赖项以及如何添加依赖项目
    vs 外部依赖项、附加依赖项以及如何添加依赖项目
    二叉搜索树相关性质的应用
    Haskell 差点儿无痛苦上手指南
    Android下用Properties保存程序配置
    volatile
  • 原文地址:https://www.cnblogs.com/williamjie/p/9698636.html
Copyright © 2011-2022 走看看