logo资料库

MongoDB 批量插入及更新.docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
var client = new MongoClient("mongodb://localhost:27017"); #region 批量插入或更新 var database = client.GetDatabase("person");//数据库 var collection = database.GetCollection("uk");//表 //var uplist = new List(); //for (int i = 0; i < 10000; i++) //{ // var person = new Person() { Name = $"Jack-{i.ToString()}", Time = DateTime.Now.ToString(), Index = DateTime.Now.Ticks }; uplist.Add(person); // //} var uplist = new Person[] { }; new Person(){ Name = "Jack", Time = DateTime.Now.ToString(), Index = 111 }, new Person(){ Name = "Jhon", Time = DateTime.Now.ToString(), Index = 211 }, new Person(){ Name = "Peter", Time = DateTime.Now.ToString(), Index = 100 } List> requests = new List>(); foreach (var item in uplist) { item.Name); var filterDefinition = Builders.Filter.Eq(nameof(Person.Name), var updateDefinition = new BsonDocument() { //获取给定对象的字段和属性的信息字典,用于创建对象实例 { "$set", BsonDocumentWrapper.Create(GetObjectNameFieldsOrProperties(item)) } }; var model = new UpdateOneModel(filterDefinition, updateDefinition) { IsUpsert = true }; requests.Add(model); } var result = collection.BulkWrite(requests); #endregion
/// /// 获取对象的字段名称及值或属性名称及值,返回名称-值字典 /// /// /// public static Dictionary GetObjectNameFieldsOrProperties(object obj) { if (obj == null) return null; var nv = new Dictionary(); #region 字段 var fields = obj.GetType().GetFields(); if (fields != null) { } foreach (var field in fields) { } var name = field.Name; var value = field.GetValue(obj); nv.Add(name, value); #endregion #region 属性 var properties = obj.GetType().GetProperties(); if (properties != null) { foreach (var prop in properties) { } var name = prop.Name; var value = prop.GetValue(obj); nv.Add(name, value);
} #endregion return nv; } public class Person { } //public ObjectId Id { get; set; } public string Name { get; set; } public string Time { get; set; } public long Index { get; set; }
分享到:
收藏