2011-01-27 24 views
28

El siguiente código me permitirá actualizar el correo electrónico donde FirstName = "john" y LastName = "Doe". ¿Cómo se actualizan tanto el correo electrónico como el teléfono sin usar el método Save()?¿Cómo se actualiza un campo múltiple usando Update.Set en MongoDB usando el controlador C# oficial?

MongoDB.Driver.MongoServer _server = MongoDB.Driver.MongoServer.Create("mongodb://localhost"); 
MongoDB.Driver.MongoDatabase _dataBase = _server.GetDatabase("test"); 
MongoDB.Driver.MongoCollection<Person> _person = _dataBase.GetCollection<Person>("person"); 

//Creat new person and insert it into collection 
ObjectId newId = ObjectId.GenerateNewId(); 
Person newPerson = new Person(); 
newPerson.Id = newId.ToString(); 
newPerson.FirstName = "John"; 
newPerson.LastName = "Doe"; 
newPerson.Email = "[email protected]"; 
newPerson.Phone = "8005551222"; 
_person.Insert(newPerson); 

//Update phone and email for all record with firstname john and lastname doe 
MongoDB.Driver.Builders.QueryComplete myQuery = MongoDB.Driver.Builders.Query.And(MongoDB.Driver.Builders.Query.EQ("FirstName", "John"), MongoDB.Driver.Builders.Query.EQ("LastName", "Doe")); 
MongoDB.Driver.Builders.UpdateBuilder update = MongoDB.Driver.Builders.Update.Set("Email", "[email protected]"); 

_person.Update(myQuery, update); 

Respuesta

59

Es muy simple;), sólo tiene que añadir otro conjunto o alguna operación más que el de su cambio:

var update = Update.Set("Email", "[email protected]") 
        .Set("Phone", "4455512"); 
+0

Wow, nunca pensó en eso, he intentado casi todo, excepto que uno! LOL. ¡Gracias! – atbebtg

3
var _personobj = _person 
{ 
    Id = 10, // Object ID 
    Email="[email protected]", 
    Phone=123456, 

}; 
var replacement = Update<_person>.Replace(_personobj); 
collection.Update(myquery, replacement); 
0

si quiere un campo de documento de actualización más y luego seleccione bandera múltiple.

por ejemplo mongodb 2.0 o 3.0v:

yourCollection.Update(_filter 
         , _update 
         , new MongoUpdateOptions() { Flags = UpdateFlags.Multi }) 
Cuestiones relacionadas