我正在尝试向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后,空字段变成一个空数组。我需要避免这种情况。 ' omitempty'没有帮助,因为如果提供的字段恰好是一个空数组而不是null,它也会跳过该字段。
首先我认为这是因为指针,但后来我发现所有数据类型都会发生同样的情况。不久,如果它为零,则mgo将其转换为零值。
我想我在这里遗漏了一些东西,因为如果mgo通过设计将所有nil值转换为零值会很奇怪。
答案 0 :(得分:1)
如果您实际上不需要将元素作为指针,请尝试*[]*VM.VirtualMachineCdrom
(或仅*[]VM.VirtualMachineCdrom
。 nil
切片==零长度切片,但指向切片的nil
指针不会。