MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongodb-go-driver/bson struct to bson.Document encoding

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.