web-dev-qa-db-fra.com

Mettre à jour un champ spécifique dans le document mongodb

J'utilise le pilote C # pour utiliser MongoDb dans les petits projets, et maintenant je suis resté avec la mise à jour des documents. essayer de comprendre comment mettre à jour le champ AVG (int)

voici mon code:

IMongoCollection<Student> studentCollection = db.GetCollection<Student>("studentV1");

Student updatedStudent = new Student() { AVG = 100, FirstName = "Shmulik" });

studentCollection.UpdateOne(
        o=>o.FirstName == student.FirstName,
            **<What should I write here?>**);

il existe un moyen simple et propre de mettre à jour des champs spécifiques comme la méthode ReplaceOne(updatedStudent)?

13
moshe770

Essayez ceci .. & pour plus d'informations

IMongoCollection<Student> studentCollection = db.GetCollection<Student>("studentV1");

Student updatedStudent = new Student() { AVG = 100, FirstName = "Shmulik" });

var update = Update<Student>.
Set(s => s.AVG, "500").
Set(s => s.FirstName, "New Name");
5
Darshak

ok, donc découvert qu'il existe un moyen facile de le faire sans écrire de chaînes partout dans le code (noms de propriété):

var updateDef = Builders<Student>.Update.Set(o => o.AVG, student.AVG);

studentCollection.UpdateOne(o => o.FirstName == student.FirstName, updateDef);

Je ne savais pas que ça prenait tellement de temps à trouver (+2 jours), mais j'ai finalement trouvé cette réponse avec les lignes:

var filter = Builders<TempAgenda>.Filter.Eq(x => x.AgendaId, agendaId);
var update = Builders<TempAgenda>.Update.Set(x => x.Items.Single(p => p.Id.Equals(itemId)).Title, title);
var result = _collection.UpdateOneAsync(filter, update).Result;

et maintenant c'est beaucoup plus facile.

34
moshe770