Malheureusement, cela n'est actuellement pas pris en charge.
Vous pouvez créer une fonction d'assistance qui "convertit" une valeur de structure en un bson.Document
comme ceci :
func toDoc(v interface{}) (doc *bson.Document, err error) {
data, err := bson.Marshal(v)
if err != nil {
return
}
err = bson.Unmarshal(data, &doc)
return
}
Ensuite, il peut être utilisé comme ceci :
partialUpdate := &NoteUpdate{
Title: "Some new title",
}
doc, err := toDoc(partialUpdate)
// check error
res := c.FindOneAndUpdate(
context.Background(),
bson.NewDocument(bson.EC.String("_id", "some-note-id")),
bson.NewDocument(bson.EC.SubDocument("$set", doc)),
)
Espérons que ElementConstructor.Interface()
s'améliorera à l'avenir et permettra de passer directement des valeurs de structure ou des pointeurs vers des valeurs de structure.