首页 文章

如何将带有nil字段的结构插入mongo?

提问于
浏览
2

我试图向mongo插入一个结构 . 首先,我从API获取数据作为JSON并将数据分配给结构 . 有些字段可能是零 . 之后,我将结构插入mongoDB . 所以我得到的问题是插入时,所有字段都被初始化 . 例如,我有一个像这样的结构:

type VirtualMachine struct {
VirtualMachineID          utils.SUUID               `bson:"VirtualMachineID"`
Cdroms                    []*VM.VirtualMachineCdrom `bson:"Cdroms"`
CpuAllocatedMHz           int                       `bson:"CpuAllocatedMHz"`
Name                      string                    `bson:"Name"`
}

如果我得到这样的Json数据

{
"VirtualMachineID":'16as4df663a',
"Cdroms":null,
"CpuAllocatedMHz":1666,
"Name":'VMName'
}

在我把它放到mongo之后,null字段变成一个空数组 . 我需要避免这种情况 . 'omitempty'没有帮助,因为如果提供的字段恰好是一个空数组而不是null,它也会跳过该字段 .

首先我认为这是因为指针,但后来我发现所有数据类型都会发生同样的情况 . 很快,如果它为零,则mgo将其转换为零值 .

我想我在这里遗漏了一些东西,因为如果mgo通过设计将所有nil值转换为零值会很奇怪 .

1 回答

  • 1

    试试 *[]*VM.VirtualMachineCdrom (如果你实际上不需要将元素作为指针,那么只需 *[]VM.VirtualMachineCdrom ) . nil slice ==零长度切片,但指向切片的 nil 指针不会 .

相关问题