Ignorer les valeurs nulles lors de la désorganisation des documents MongoDB
Mongo-Go-Driver propose plusieurs approches pour ignorer les valeurs nulles lors de la désorganisation des documents MongoDB dans les structures Go.
1. Décodeurs personnalisés pour des types spécifiques
2. Décodeurs nuls « de type neutre »
Exemple de code :
// Nullaware decoder for all types, setting null values to zero values type NullawareDecoder struct { DefDecoder bsoncodec.ValueDecoder ZeroValue reflect.Value } // Decodes null values to zero values, otherwise delegates to the default decoder func (nd *NullawareDecoder) DecodeValue(dctx bsoncodec.DecodeContext, vr bsonrw.ValueReader, val reflect.Value) error { if vr.Type() == bsontype.Null { if !val.CanSet() { return errors.New("value not settable") } if err := vr.ReadNull(); err != nil { return err } val.Set(nd.ZeroValue) return nil } return nd.DefDecoder.DecodeValue(dctx, vr, val) } // Register NullawareDecoder for desired types rb := bson.NewRegistryBuilder() rb.RegisterDecoder(reflect.TypeOf(""), &NullawareDecoder{bson.DefaultRegistry.LookupDecoder(reflect.TypeOf("")), reflect.ValueOf("")}) // ... (register for other types as needed) // Use the registry within a ClientOptions instance clientOpts := options.Client(). ApplyURI("mongodb://localhost:27017/"). SetRegistry(rb.Build()) // Initialize MongoDB client with customized registry to ignore nulls client, err := mongo.Connect(ctx, clientOpts)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!