example - MongoDB C#Driver 2.0-Actualizar documento
mongodb insert document in collection (3)
Actualmente estoy actualizando mi código a MongoDB C # driver 2.0 y tengo problemas para actualizar el código para actualizar documentos.
Usando la versión anterior pude hacer algo como esto:
MyType myObject; // passed in
var collection = _database.GetCollection<MyType>("myTypes");
var result = collection.Save(myObject);
Estoy luchando para encontrar una manera de hacer esto en la nueva versión. He encontrado algunos ejemplos de actualización de campos individuales como
var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var update = Builders<MyType>.Update.Set(s => s.Description, description);
var result = await collection.UpdateOneAsync(filter, update);
Me gustaría actualizar todos los campos como lo estaba haciendo en la versión anterior con el método Guardar.
Algunas ideas ?
Muchas gracias
Creo que estás buscando a ReplaceOneAsync()
:
MyType myObject; // passed in
var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var result = await collection.ReplaceOneAsync(filter, myObject)
Para agregar a la respuesta de mnemosyn, si bien un simple ReplaceOneAsync
actualiza un documento que no es equivalente a Save
como Save
, también insertará el documento si no encuentra uno para actualizar.
Para lograr el mismo comportamiento con ReplaceOneAsync
, debe usar el parámetro opciones:
MyType myObject;
var result = await collection.ReplaceOneAsync(
item => item.Id == id,
myObject,
new UpdateOptions {IsUpsert = true});
puede usar LINQ de la siguiente manera: await context.collection.ReplaceOneAsync (b => b.Id == item.Id, item);