您的位置:首页 > 数据库 > Mongodb

MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)

2015-06-02 15:27 537 查看
回到目录

我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋一下初值,即new一下它,呵呵.

正确的mongo集合



对于赋过初值的子对象,在按需要更新时,有以下两种要注意一下

1 子对象的_id,如果已经存在,就更新它的值

2 子对象的_id,如果不存在,或者没有显示为_id赋值,则添加一条新的记录,即_id从新生成

而对于实体更新不存在这个问题,实体里的值会覆盖掉原表的值,下面看一下按需要更新的代码

#region 按需更新
repository1.Update<Person>(i => new Person
{
Id = "556d531e2683c818c86caddb",
Address = new Address
{
Id = "556d531e2683c818c86ca123",/*不加id(或者id没有在集合中存在)就是向列表添加一条元素,id存在则更新指定的元素*/
Province = "luanxian",
City = "111湖南占占大师",
District = "小区",
Seconds = 1
},
AddList = new List<Address>() {
new Address
{
/*不加id(或者id没有在集合中存在)就是向列表添加一条元素,id存在则更新指定的元素*/
Id="556d531e2683c818c86cadde",
Province = "luanxian",
City = "湖南占占大师ddd",
District = "小区",
Seconds = 1
}}
});
#endregion


对于整个更新,还是同样的问题,当然前提需要把表记录从库中获出来

#region 完整更新
var e1 = repository1.Find("556d531e2683c818c86caddb");
e1.Name = "wet";
e1.Address.City = "北京123";
/*遍历原来的集合,批量赋值*/
e1.AddList.ForEach(i =>
{
i.City = "大占占";
});
/*为每个对象分别赋值,不指定ID被自动生成*/
e1.AddList = new List<Address> {
new Address{City="占占1"},
new Address{City="占占2"}
};
repository1.Update(e1);
#endregion


对于MonoDB我们还需要继续去探索,研究...

回到目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: