fields example collection c# mongodb mongodb-.net-driver mongodb-csharp-2.0

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);