Ce chapitre présente comment mettre à jour les données de document dans Golang MongoDB.
Fonctions de mise à jour prises en charge par MongoDB
- Collection.UpdateOne - Mettre à jour une seule donnée
- Collection.UpdateMany - Mettre à jour les données par lots
- Collection.ReplaceOne - Remplacer des données
Préparer les données de test
Insérer un lot de données dans la collection "coll"
docs := []interface{}{
bson.D{
{"item", "toile"},
{"qty", 100},
{"size", bson.D{
{"h", 28},
{"w", 35.5},
{"uom", "cm"},
}},
{"status", "A"},
},
bson.D{
{"item", "journal"},
{"qty", 25},
{"size", bson.D{
{"h", 14},
{"w", 21},
{"uom", "cm"},
}},
{"status", "A"},
},
// ... (autres données)
}
result, err := coll.InsertMany(context.Background(), docs)
Mettre à jour un document
result, err := coll.UpdateOne(
context.Background(), // Obtenir le paramètre de contexte
bson.D{ // Définir les critères de requête pour trouver le document avec l'élément=papier
{"item", "paper"},
},
bson.D{ // Définir l'expression de mise à jour
{"$set", bson.D{ // Utiliser l'opérateur $set pour définir le contenu du champ mis à jour
{"size.uom", "cm"}, // Changer la valeur de size.uom en cm
{"status", "P"}, // Changer la valeur de status en P
}},
{"$currentDate", bson.D{ // Utiliser l'opérateur $currentDate pour mettre à jour la valeur du champ lastModified à l'heure actuelle
{"lastModified", true},
}},
},
)
Faire correspondre un document en fonction des critères de requête, puis mettre à jour le contenu de ce document.
Astuce : Si vous n'êtes pas familier avec MongoDB, veuillez lire le tutoriel MongoDB.
Mise à jour de documents en vrac
La différence par rapport à la fonction UpdateOne est qu'UpdateMany met à jour en vrac les documents correspondants en fonction des critères de correspondance.
result, err := coll.UpdateMany(
contexte.Background(),
bson.D{ // Définir les critères de requête, qty > 50
{"qty", bson.D{
{"$lt", 50},
}},
},
bson.D{ // Définir le contenu de la mise à jour
{"$set", bson.D{
{"size.uom", "cm"},
{"status", "P"},
}},
{"$currentDate", bson.D{
{"lastModified", true},
}},
},
)
Remplacer un document
Interroger un document spécifié en fonction des critères de requête et remplacer le contenu du document par le contenu spécifié.
Conseil : Remplacer un document se réfère au remplacement global, et non à la mise à jour partielle de certaines valeurs de champ dans le document.
result, err := coll.ReplaceOne(
contexte.Background(),
bson.D{ // Définir les critères de requête, item=paper
{"item", "paper"},
},
bson.D{ // Définir le nouveau contenu du document
{"item", "paper"},
{"instock", bson.A{
bson.D{
{"warehouse", "A"},
{"qty", 60},
},
bson.D{
{"warehouse", "B"},
{"qty", 40},
},
}},
},
)
Tout d'abord, en fonction des critères de requête, trouver le document avec l'élément=paper, puis le remplacer par le nouveau contenu du document.