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"
    }
  • 相关阅读:
    vgcreate语法
    lsmod语法
    lvm语法2
    lvm语法
    mount语法
    fdisk语法
    mdadm语法
    ln语法
    mknod语法
    黑客常用dos-cmd命令
  • 原文地址:https://www.cnblogs.com/dadream/p/5063727.html
Copyright © 2011-2022 走看看