即使不为空,Mgo 也会忽略字段

Posted

技术标签:

【中文标题】即使不为空,Mgo 也会忽略字段【英文标题】:Mgo omit field even when not empty 【发布时间】:2014-05-15 19:51:31 【问题描述】:

我想知道是否有任何方法可以让 stuct 字段即使不为空也不会提交给 mgo。

我发现这样做的唯一方法是将字段设为小写,这使得访问起来很痛苦。还有其他方法吗?

这是一个示例,我的目标是不将 SSN 提交到数据库中,但仍保持大写。

package main

import (
  "fmt"
    "crypto/sha1"
    "encoding/base64"
    "labix.org/v2/mgo"
)

type Person struct
  Name string
  SSN string
  HashedSSN string


func main() 
  bob := Person"Bob", "fake_ssn", ""
  hasher := sha1.New()
  hasher.Write( []byte(bob.SSN))
  sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))
  bob.HashedSSN = sha
  mgoSession, err := mgo.Dial("localhost:27017")
  if err != nil 
    fmt.Println("mongo_config#initMongoSessions : Could not dial to mgoSession", err)
   else 
    mgoSession.DB("test").C("person").Insert(bob)
  

谢谢,

【问题讨论】:

【参考方案1】:

您可以通过使用字段标签来做到这一点,如下所示:

type T struct 
    Field string `bson:"-"`

【讨论】:

亲爱的,你对 Gustavo 很有帮助

以上是关于即使不为空,Mgo 也会忽略字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在提交表单之前验证电子邮件字段不为空

即使activemq中的队列不为空,JMS实现中的receiveNoWait也会返回null

解决protobuf忽略空返回值的问题

即使在 Angular JS 中必填字段为空,表单也会被提交

查找数组字段不为空的 MongoDB 记录

查找数组字段不为空的 MongoDB 记录