Maison  >  Article  >  développement back-end  >  Obtenez toutes les données de la collection composite MongoDB en utilisant le filtre dans Golang

Obtenez toutes les données de la collection composite MongoDB en utilisant le filtre dans Golang

WBOY
WBOYavant
2024-02-06 10:36:13643parcourir

Obtenez toutes les données de la collection composite MongoDB en utilisant le filtre dans Golang

Contenu de la question

J'essaie d'obtenir toutes les données en utilisant le champ de nom que j'ai spécifié dans le corps de la demande d'API. J'ai créé un filtre pour la fonction .find(). Mais je ne parviens à obtenir aucun résultat (le corps de la réponse affiche null, aucune erreur). Vous pouvez voir mon fichier modèle et le reste du code en bas.

Contrôleur :

func get_formbypatientfullname(ctx *gin.context) {
   col := mongodb.client.database(config.database_name).collection("consentforms")
   filter := bson.m{"patient": bson.m{"name": ctx.query("name")}}

   cursor, err := col.find(_context.todo(), filter)
   if err != nil {
      log.fatal(err)
   }

   var results []general_models.consentform
   if err = cursor.all(_context.todo(), &results); err != nil {
      log.fatal(err)
   }
   for _, result := range results {
      res, _ := json.marshal(result)
      fmt.println(string(res))
   }
   ctx.indentedjson(http.statusok, gin.h{"data": results})
}

Fichier modèle :

type ConsentForm struct {
   ID                 primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
   FormFileURL        string             `json:"FormFileURL" bson:"FormFileURL"`
   ProcessName        string             `json:"ProcessName" bson:"ProcessName"`
   DateOfNotification string             `json:"DateOfNotification" bson:"DateOfNotification"`
   WitnessName        string             `json:"WitnessName" bson:"WitnessName"`
   WitnessSurname     string             `json:"WitnessSurname" bson:"WitnessSurname"`
   ResponsibleDoctor  string             `json:"ResponsibleDoctor" bson:"ResponsibleDoctor"`
   Patient            IPatient           `json:"Patient" bson:"Patient"`
   QuestionOptions    IQuestionOptions   `json:"QuestionOptions" bson:"QuestionOptions"`
   AdditionalDetails  string             `json:"AdditionalDetails" bson:"AdditionalDetails"`
}

type IPatient struct {
   // ID                primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"`
   Name              string `json:"Name" bson:"Name"`
   Surname           string `json:"Surname" bson:"Surname"`
   Birthdate         string `json:"Birthdate" bson:"Birthdate"`
   TCKN              string `json:"TCKN" bson:"TCKN"`
   FacePhotoURL      string `json:"FacePhotoURL" bson:"FacePhotoURL"`
   SignatureImageURL string `json:"SignatureImageURL" bson:"SignatureImageURL"`
}

J'essaie de filtrer en fonction du nom d'utilisateur et d'obtenir toutes les données de l'utilisateur. Mais je pense que j'ai un bug dans la partie filtre ou dans tout le code car je ne parviens à récupérer aucune donnée. Ce que je reçois en retour est vide.


Bonne réponse


Votre filtre correspondra aux documents contenant le champ patient 是嵌入文档且具有与给定值匹配的单个 name.

Pour filtrer par champ intégré dans le document, vous devez utiliser la notation par points :

filter := bson.M{"Patient.Name": ctx.Query("name")}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer