Home > Article > Backend Development > Get all data from mongodb composite collection using filter in golang
I try to get all the data using the name field that I specified in the api request body. I've created a filter for the .find() function. But I can't get any results (response body shows null, no error at all). You can see my model file and the rest of the code at the bottom.
Controller:
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}) }
Model file:
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"` }
I try to filter based on username and get all the data of the user. But I think I have a bug in the filter part or the whole code because I can't get any data back. What I get in return is empty.
Your filter will match where patient
is an embedded document and has a single name that matches the given value
Documentation of the field.
To filter by a field embedded in the document, you must use dot notation:
filter := bson.M{"Patient.Name": ctx.Query("name")}
The above is the detailed content of Get all data from mongodb composite collection using filter in golang. For more information, please follow other related articles on the PHP Chinese website!