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.