MongoDB學習筆記~自己封裝的Curd操作(按需更新的先決條件)
阿新 • • 發佈:2018-12-29
我們上一講中介紹了大叔封裝的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我們還需要繼續去探索,研究...