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
                        }

  • 相关阅读:
    sql over(partition by) 开窗函数的使用
    利用curl函数处理GET数据获取微信公众号的access_token
    2018.4.12
    字段和属性
    C#实现回车键登录
    判断DataTable里面数据是否有重复数据
    一个强大的人民币大写转换的正则表达式
    C#将image中的显示的图片转换成二进制
    遍历Dev LayoutControl中的所有控件信息
    遍历窗体中所有控件的信息
  • 原文地址:https://www.cnblogs.com/94cool/p/6698116.html
Copyright © 2011-2022 走看看