//更新操作使用collection的Update方法,有泛型和非泛型两个版本://其签名如下(列出了两个简单并常用的的重载,还有几个):public virtual WriteConcernResult Update(IMongoQuery query, IMongoUpdate update);public virtual WriteConcernResult Update(IMongoQuery query, IMongoUpdate update, UpdateFlags flags)
////// 学生实体类 /// public class Student { public ObjectId Id { get; set; } ////// 姓名 /// public string Name { get; set; } ////// 年龄 /// public Int32 Age { get; set; } ////// 地址 /// public Address Address { get; set; } } ////// 地址 /// public class Address { ////// 城市 /// public String City { get; set; } ////// 邮编 /// public String PostCode { get; set; } }
//在我们关系数据库中,比如oracle或者sqlserver中按照实体类设计,表结构应该是两个,学生信息表以及地址表,但是我们假设存储在一个表中方便我们类比;我要更新数据库中信息,通常关系数据库中我们是这么做的:update tableName set a='a' and b='b' where c='c'//在mongodb中我们就是向下面这样做:use dbName;db.CollectionName.update({query:"query"},{ "$set":{update:"update"}})
首先构造IMongoQuery://a.通过QueryBuilder构造var t1 = queryBuilder.EQ (t => t.Address.City, "北京");//where city="北京"//b.通过Query构造 var t2 = Query.EQ("Address.City", "北京");//where city="北京" var t3 = Query .EQ (t => t.Address.City, "北京");//where city="北京"//其次,构造IMongoUpdatevar u1 = Update .Set (t => t.Address.City, "上海");//set city="上海"var u2 = Update.Set("Address.City", "上海");//set city="上海"这样可以往下调用update方法了collection.Update(t1, u2);//只更新满足t1的一个文档对象collection.Update(t1, u2, UpdateFlags.Multi);//更新满足t1的所有文档对象