J'ai modélisé une relation has-many dans MongoDB avec un groupe ayant un tableau d'étudiants comme l'un des champs.Comment appliquer une fonction de mise à jour à tous les documents d'une collection dans MongoDB (en utilisant mgo)?
Lorsqu'un étudiant est supprimé, je souhaite passer en revue tous les groupes, et pour chaque groupe qui contient le programme deleted_student dans son groupe .Students, supprimez l'étudiant deleted_student du tableau. Pour supprimer l'élément deleted_student du tableau, j'ai une fonction d'aide, RemoveItem que je voudrais utiliser.
Quelle est la méthode "Mongo" pour appliquer cette fonction à tous les enregistrements d'une collection? Ou devrais-je simplement retourner tous les groupes, puis parcourir chacun d'entre eux et effectuer l'opération sur le terrain. Quelque chose comme ça (en Go en utilisant la bibliothèque MGO)
groups := conn.C("groups")
allGroups := groups.Find()
for _, group := range allGroups {
group.Students = RemoveItem(id, group.Students)
}
// Helper function that removes a mgo.DBRef from an array of mgo.DBRefs based on ID string
func RemoveItem(objectId string, array []mgo.DBRef) []mgo.DBRef {
updatedArray := []mgo.DBRef{}
for _, item := range array {
if item.Id != objectId {
updatedArray = append(updatedArray, item)
}
}
return updatedArray
}