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

    问题描述

    当使用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"
    }
  • 相关阅读:
    Python标准模块--logging
    Spark中决策树源码分析
    常见的相似或相异程度计算方法
    mpi4py实践
    集成学习
    决策树
    git使用
    Ubuntu 14.04 64bit 安装tensorflow(GPU版本)
    KNN算法
    一致性哈希算法原理及其在分布式系统中的应用
  • 原文地址:https://www.cnblogs.com/dadream/p/5063727.html
Copyright © 2011-2022 走看看