zoukankan      html  css  js  c++  java
  • c# mongo 数组里对象更新

    var queryDetail = new BsonDocument("cNo", doc.cNo);
                        queryDetail.AddRange(new BsonDocument("Details.dDate", doc.oRDate));

                        //日表数组中存在相同报表日期的数据
                        bool exist = tblDays.FindSync(queryDetail).Any();
                        if (exist)
                        {
                            #region 日表数组中存在相同报表日期的数据,则按字段更新

                            List<WriteModel<BsonDocument>> requests = new List<WriteModel<BsonDocument>>();
                            requests.Add(new UpdateOneModel<BsonDocument>(_query, update) { IsUpsert = true });

                            var updateDetail = new BsonDocument();
                            foreach (var propert in properties)
                            {
                                var vals = propert.GetValue(detail);
                                if (propert.PropertyType.BaseType.Name.Equals("Enum"))
                                {
                                    vals = Convert.ToInt64(vals);
                                }
                               
                                var tmpUpdate = new BsonDocument() { { "$set", new BsonDocument() { { string.Format("Details.$.{0}", propert.Name), BsonDocumentWrapper.Create(vals) } } } };

                                requests.Add(new UpdateOneModel<BsonDocument>(queryDetail, tmpUpdate) { IsUpsert = true });
                            }
                            if (requests.Count > 0)
                            {
                                tblDays.BulkWrite(requests);
                            }

                            #endregion
                        }

    else                    {
                            #region 日表数组中不存在相同报表日期的数据,则直接新增到数组

                            var updateSet = new BsonDocument() { { "$addToSet", new BsonDocument() { { "Details", BsonDocumentWrapper.Create(detail) } } } };
                            update.AddRange(updateSet);

                            tblDays.UpdateOne(_query, update, new UpdateOptions { IsUpsert = true });

                            #endregion
                        }

  • 相关阅读:
    Linux.Unix.windows的纠结史
    第一次来到博客园
    canvas的fillText参数解释
    【转】Javascript画立体玫瑰
    C#学习笔记(有C,C++,JAVA语言基础)
    推荐NHibernate新书:NHibernate 3.0 CookBook[附下载]
    NHibernate之旅系列文章导航
    存储过程
    .Net下的 ORM框架介紹
    十步让你成为更优秀的程序员
  • 原文地址:https://www.cnblogs.com/94cool/p/6698116.html
Copyright © 2011-2022 走看看