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
                        }

  • 相关阅读:
    SIGAI深度学习第三集 人工神经网络2
    SIGAI深度学习第二集 人工神经网络1
    SIGAI深度学习第一集 机器学习与数学基础知识
    python第三方库的更新和安装指定版本
    AttributeError: 'int' object has no attribute 'upper'
    洛谷 3916 图的遍历
    【模板】分块
    洛谷 1003 NOIP2011 D1T1 铺地毯
    洛谷 省选营题目 过年
    洛谷 1396 营救 (最短路)
  • 原文地址:https://www.cnblogs.com/94cool/p/6698116.html
Copyright © 2011-2022 走看看