Maison  >  Article  >  développement back-end  >  Comment construire et transmettre des documents BSON dans Go pour MongoDB ?

Comment construire et transmettre des documents BSON dans Go pour MongoDB ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 06:47:03182parcourir

How to Construct and Pass BSON Documents in Go for MongoDB?

Construire et transmettre des documents BSON dans Go avec MongoDB

Dans votre application Go, vous rencontrez un problème où les tentatives d'insertion d'un document BSON à l'aide la fonction Insert(interface{}) dans dbEngine.go génère l'erreur : "panique : impossible de marshaler l'interface {} en tant que BSON document."

Pour résoudre ce problème, il est important de comprendre que dans Go, vous n'avez pas besoin de créer et de transmettre manuellement des documents BSON. Au lieu de cela, vous pouvez utiliser la fonctionnalité de marshaling MongoDB BSON, qui convertit automatiquement les structures Go en documents BSON.

Pour implémenter cela, créez une structure dans account.go pour représenter le document que vous souhaitez insérer, par exemple :

type Account struct {
  Id bson.ObjectId `bson:"_id"`
  BalanceAmount int
}

Dans votre dbEngine.go, mettez à jour la fonction Insert comme suit :

func Insert(document interface{}){
  session, err := mgo.Dial("localhost")
  // error handling
  c := session.DB("db_name").C("collection_name")
  err = c.Insert(document)
}

Enfin, dans l'application principale, instanciez une structure Account, définissez ses champs et transmettez-la à la fonction Insert :

acc := Account{}
acc.Id = bson.NewObjectId()
acc.BalanceAmount = 3

dbEngine.Insert(&acc);

En suivant ces étapes, vous pouvez simplifier le processus de gestion des documents BSON et éviter l'erreur que vous étiez rencontre.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn