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
                        }

  • 相关阅读:
    channels的使用
    paramiko模块(远程操作服务器)
    GIT版本管理工具教程
    Python中的魔术方法详解(双下方法)
    Django中Q查询及Q()对象
    Python3操作Excel
    漏洞复现环境集锦-Vulhub
    CVE-2019-0193 远程命令执行-漏洞复现
    Weblogic-SSRF 漏洞复现
    CVE-2020-0796 永恒之蓝?
  • 原文地址:https://www.cnblogs.com/94cool/p/6698116.html
Copyright © 2011-2022 走看看