<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MongoDB學習筆記~使用原生語句實現三層集合關系的更新

      回到目錄

      MongoDB的文檔型數據結構使得它在存儲數據上很像JSON,在可讀性方面很強,然而這種復雜的結構在update時相對麻煩一些,而對于官方給出的文檔說的也不夠細致,有些東西也是模棱兩可的態度,對于多層嵌套的集合對象,實現update更是麻煩,而目前我們所驗證的是,原生語句最多支持三層集合對象,層次再多就無法實現了。

      三層集合關系對象代碼如下,其實是內嵌兩層,算上實體,共三層集合

      對于這種結構,我們使用原生的語句是可以對OrderDetail這個層次的對象進行更新的,下面是我的做法

      1 通過三級id查詢一級大對象(Query.EQ)(包括所有二級和三級)

        var query = Query.EQ("OrderList.OrderDetail._id", threeID);

      2 通過SetFields過濾多余的二級對象

        var oo = mongoRepository.Collection.Find(query).SetFields("OrderList.$").FirstOrDefault();

      3 對象查詢出來后,三級對象列表只能通過遍歷的方法查詢出來,并對它進行賦值更新

         for (int i = 0; i < orderDetail.Count; i++)
              {
                      if (orderDetail[i].Id == threeID)
                      {
                          orderDetail[i].ProductName = "大占占修改了訂單 2015-09-21";
                          break;       
                      }
               }

      好了,說話了步驟,再來看一下完整的代碼

              var threeID = ObjectId.Parse("55c012232683c8143c3b494d");
                  var mongoRepository = new MongoDB.Data.Core.MongoOfficialRepository<Person>();
                  var query = Query.EQ("OrderList.OrderDetail._id", threeID);
                  var oo = mongoRepository.Collection.Find(query).SetFields("OrderList.$").FirstOrDefault();
                  var update = new UpdateDocument();
                  var OrderInfo = oo.OrderList.FirstOrDefault();
                  var orderDetail = OrderInfo.OrderDetail;
                  for (int i = 0; i < orderDetail.Count; i++)
                  {
                      if (orderDetail[i].Id == threeID)
                      {
                          orderDetail[i].ProductName = "大占占修改了訂單 2015-09-21";
      
                          #region 先pull,再push
                          //update = new UpdateDocument {{ "$pull", 
                          //                                    new BsonDocument("OrderList."+j+".OrderDetail",
                          //                                    new BsonDocument("_id",threeID))
                          //                                 }};
                          //mongoRepository.Collection.Update(query1, update);
                          //update = new UpdateDocument {{ "$push", 
                          //                                 new BsonDocument("OrderList."+j+".OrderDetail",
                          //                                 new BsonDocument(od[i].ToDictionary()))
                          //                            }};
                          //mongoRepository.Collection.Update(query1, update);
                          #endregion
      
                          #region 直接set
                          update = new UpdateDocument {{ "$set",       
                                                               new BsonDocument("OrderList.$.UserName","大叔2015-09-21")
                                                          }};
                          mongoRepository.Collection.Update(query, update);
      
                          update = new UpdateDocument {{ "$set", 
                                                               new BsonDocument("OrderList.$.OrderDetail."+i,
                                                               new BsonDocument(orderDetail[i].ToDictionary()))
                                                          }};
                          mongoRepository.Collection.Update(query, update);
                          #endregion
                          break;
                      }
                  }

      最后的結果是我們希望看到的,性能比之前的版本少了一層(二次分類)遍歷,可以接受!

      就大叔的性格來說,MongoDB的嵌套更新還會在研究,開發還會在繼續,因為向4層的更新還沒有實現,呵呵,開發進行中...

      回到目錄

      posted @ 2015-09-22 10:00  張占嶺  閱讀(2464)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 最近中文字幕国产精品| 国内少妇人妻偷人精品| 国产午夜精品无码一区二区| 91网站在线看| 国产精品一区二区三区黄| 少妇人妻av无码专区| 99国精品午夜福利视频不卡99 | 日韩精品区一区二区三vr| 亚洲高清WWW色好看美女| 四虎国产精品永久在线下载| 亚洲AV日韩精品久久久久| 宽城| 国产免费网站看v片元遮挡| 亚洲熟妇AV午夜无码不卡| 日本高清一区二区三| 免费无码观看的AV在线播放| 久久精品熟女亚洲av麻| 一区二区不卡99精品日韩| 久久婷婷成人综合色| 亚洲 制服 丝袜 无码| 女人腿张开让男人桶爽| 成年女人碰碰碰视频播放| 亚洲国产精品久久久天堂麻豆宅男| 依兰县| 精品久久久久久亚洲综合网| 美女高潮黄又色高清视频免费| 日本一区午夜艳熟免费| 亚洲av无码牛牛影视在线二区 | 国产视频一区二区三区四区视频| 苍井空毛片精品久久久| 亚洲一区二区三区激情在线| 内射合集对白在线| 国产成人精品久久一区二区| 熟妇女人妻丰满少妇中文字幕| a级黑人大硬长爽猛出猛进| 四虎影视4hu4虎成人| 欧美日韩在线第一页免费观看| 国产高清在线精品一本大道| 亚洲精品第一页中文字幕| 色老板精品视频在线观看| 伊宁市|