我有包含一些嵌套陣列值的代碼。如下:
`
var descriptor models.Descriptor
_ = json.NewDecoder(r.Body).Decode(&descriptor)
result, _ := collectionDescriptor.InsertOne(context.TODO(), descriptor)
type Descriptor struct {
Id string `json:"id" bson:"id"`
Type string `json:"type,omitempty" bson:"type,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
Version string `json:"version,omitempty" bson:"version,omitempty"`
Modules []string `json:"modules,omitempty" bson:"modules,omitempty"`
Configs []Config `json:"configs" bson:"configs"`
}
type Config struct {
Id string `json:"id" bson:"id"`
Type string `json:"type,omitempty" bson:"type,omitempty"`
Name string `json:"name,omitempty" bson:"name,omitempty"`
Protocol []Protocols `json:"protocol" bson:"protocol"`
}
type Protocols struct {
Id string `json:"id" bson:"id"`
Type string `json:"type,omitempty" bson:"type,omitempty"`
Name string `json:"name" bson:"name,omitempty"`
Items []Itemes `json:"items" bson:"items"`
}
descriptor.Configs[0].Protocol[0] = nil
config = descriptor.Configs[0]
_ = json.NewDecoder(r.Body).Decode(&config)
conf, errr := collectionConfigDes.InsertOne(context.TODO(), config)
json.NewEncoder(w).Encode(conf)`
我想將 descriptor.configs[0].protocol 中的值洗掉為空陣列或空字串。然后我將其發送到 mongoDB。json格式如下

不同的方法(在 JSON 上)是,
1.1. omitempty從Protocol欄位中洗掉。這在 JSON 中給出 null。
Protocol []Protocols `json:"protocol" bson:"protocol"`
1.2. omitempty像上面一樣洗掉;并make像@Sangria 提到的那樣使用。這在 JSON 中給出了空陣列/切片。
desc[0].Configs[0].Protocol = make([]Protocols, 0)
| 空值 | 空陣列 |
|---|---|
![]() |
![]() |
這至少適用于 JSON。將相同的內容插入 Mongo 有什么問題嗎?嘗試 3 種可能性。
- 如果您將記錄存盤為新記錄,則無關緊要。但是在編輯現有的情況下,您應該
collection.UpdateOne()在 Mongo 中使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363335.html
下一篇:使用PHP重命名JSON子鍵


