atb*_*btg 42 .net c# mongodb mongodb-.net-driver
以下代码将允许我更新FirstName ="john"和LastName ="Doe"的电子邮件.如何在不使用Save()方法的情况下更新电子邮件和电话?
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 = "john.doe@gmail.com";
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", "jdoe@gmail.com");
_person.Update(myQuery, update);
Run Code Online (Sandbox Code Playgroud)
And*_*ich 85
这很简单;),只需在您的更新中添加另一组或其他操作:
var update = Update.Set("Email", "jdoe@gmail.com")
.Set("Phone", "4455512");
Run Code Online (Sandbox Code Playgroud)
i3a*_*non 26
您还可以使用泛型和类型安全Update<TDocument>:
var update = Update<Person>.
Set(p => p.Email, "jdoe@gmail.com").
Set(p => p.Phone, "4455512");
Run Code Online (Sandbox Code Playgroud)
我想更新多个 N 个字段,这就是我实现它的方法
我用了Builders<T>.Update.Combine
// Get the id for which data should be updated
var filter = Builders<BsonDocument>.Filter.Eq("_id", ObjectId.Parse(_id));
// Add Data which we wants to update to the List
var updateDefination = new List<UpdateDefinition<BsonDocument>>();
foreach (var dataField in metaData.Fields)
{
updateDefination.Add(Builders<BsonDocument>.Update.Set(dataField.Name, dataField.Value));
}
var combinedUpdate = Builders<BsonDocument>.Update.Combine(updateDefination);
await GetCollectionForClient().UpdateOneAsync(filter, combinedUpdate);
Run Code Online (Sandbox Code Playgroud)
对于条件更新,您可以使用类似
var updList = new List<UpdateDefinition<MongoLogEntry>>();
var collection = db.GetCollection<MongoLogEntry>(HistoryLogCollectionName);
var upd = Builders<MongoLogEntry>.Update.Set(r => r.Status, status)
.Set(r => r.DateModified, DateTime.Now);
updList.Add(upd);
if (errorDescription != null)
updList.Add(Builders<MongoLogEntry>.Update.Set(r => r.ErrorDescription, errorDescription));
var finalUpd = Builders<MongoLogEntry>.Update.Combine(updList);
collection.UpdateOne(r => r.CadNum == cadNum, finalUpd, new UpdateOptions { IsUpsert = true });
Run Code Online (Sandbox Code Playgroud)
或者只是弹出记录,然后修改并替换它。
| 归档时间: |
|
| 查看次数: |
36227 次 |
| 最近记录: |