示例#1
0
        /// <summary>
        /// 异步批量修改数据
        /// </summary>
        /// <param name="dic">要修改的字段</param>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">修改条件</param>
        /// <returns></returns>
        public static async Task <UpdateResult> UpdateManayAsync(MongodbHostOptions host, Dictionary <string, string> dic, FilterDefinition <T> filter)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                T t = new T();
                //要修改的字段
                var list = new List <UpdateDefinition <T> >();
                foreach (var item in t.GetType().GetProperties())
                {
                    if (!dic.ContainsKey(item.Name))
                    {
                        continue;
                    }
                    var value = dic[item.Name];
                    list.Add(Builders <T> .Update.Set(item.Name, value));
                }
                var updatefilter = Builders <T> .Update.Combine(list);

                return(await client.UpdateManyAsync(filter, updatefilter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        /// <summary>
        /// 异步根据id查询一条数据
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="id">objectid</param>
        /// <param name="field">字段名称</param>
        /// <returns></returns>
        public static async Task <T> FindOneAsync(MongodbHostOptions host, string id, string[] field = null)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                FilterDefinition <T> filter = Builders <T> .Filter.Eq("_id", new ObjectId(id));

                //不指定查询字段
                if (field == null || field.Length == 0)
                {
                    return(await client.Find(filter).FirstOrDefaultAsync());
                }

                //制定查询字段
                var fieldList = new List <ProjectionDefinition <T> >();
                for (int i = 0; i < field.Length; i++)
                {
                    fieldList.Add(Builders <T> .Projection.Include(field[i].ToString()));
                }
                var projection = Builders <T> .Projection.Combine(fieldList);

                fieldList?.Clear();
                return(await client.Find(filter).Project <T>(projection).FirstOrDefaultAsync());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#3
0
        /// <summary>
        /// 异步修改一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="id">主键</param>
        /// <returns></returns>
        public static async Task <UpdateResult> UpdateAsync(MongodbHostOptions host, T t, string id)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                //修改条件
                FilterDefinition <T> filter = Builders <T> .Filter.Eq("_id", new ObjectId(id));

                //要修改的字段
                var list = new List <UpdateDefinition <T> >();
                foreach (var item in t.GetType().GetProperties())
                {
                    if (item.Name.ToLower() == "id")
                    {
                        continue;
                    }
                    list.Add(Builders <T> .Update.Set(item.Name, item.GetValue(t)));
                }
                var updatefilter = Builders <T> .Update.Combine(list);

                return(await client.UpdateOneAsync(filter, updatefilter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#4
0
        public void TestDeleteInstance()
        {
            MongodbClient         mongodbClient = GetMongodbClient();
            DeleteInstanceRequest request       = new DeleteInstanceRequest();

            request.RegionId   = "cn-north-1";
            request.InstanceId = "mongo-hfu1w2uhbc";
            var response = mongodbClient.DeleteInstance(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#5
0
        public void TestDeleteBackup()
        {
            MongodbClient       mongodbClient = GetMongodbClient();
            DeleteBackupRequest request       = new DeleteBackupRequest();

            request.RegionId = "cn-north-1";
            request.BackupId = "mongo-hfu1w2uhbc@115306868213070";
            var response = mongodbClient.DeleteBackup(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#6
0
        public void TestCreateBackup()
        {
            MongodbClient       mongodbClient = GetMongodbClient();
            CreateBackupRequest request       = new CreateBackupRequest();

            request.InstanceId = "mongo-hfu1w2uhbc";
            request.RegionId   = "cn-north-1";
            request.BackupName = "dotnetsdktestbackup";
            var response = mongodbClient.CreateBackup(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#7
0
        public void TestModifyInstanceName()
        {
            MongodbClient             mongodbClient = GetMongodbClient();
            ModifyInstanceNameRequest request       = new ModifyInstanceNameRequest();

            request.InstanceId   = "mongo-hfu1w2uhbc";
            request.InstanceName = "dotnetsdk test";
            request.RegionId     = "cn-north-1";
            var response = mongodbClient.ModifyInstanceName(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#8
0
        public void TestResetPassword()
        {
            MongodbClient        mongodbClient = GetMongodbClient();
            ResetPasswordRequest request       = new ResetPasswordRequest();

            request.InstanceId      = "mongo-hfu1w2uhbc";
            request.RegionId        = "cn-north-1";
            request.AccountPassword = "******";
            var response = mongodbClient.ResetPassword(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#9
0
        private async void ButtonUpdate_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(NameGood))
                {
                    IMongoDatabase mongodb = MongodbClient.GetDatabase(DataBase);

                    var goods = mongodb.GetCollection <BsonDocument>(Collection);

                    var document = new BsonDocument();
                    switch (CurrentType)
                    {
                    case Good_types.Default:
                        document["Name"]  = NameGood;
                        document["Value"] = ValueGood;
                        document["Type"]  = CurrentType;
                        break;

                    case Good_types.Prom:
                        document["Name"]     = NameGood;
                        document["Value"]    = ValueGood;
                        document["Type"]     = CurrentType;
                        document["SizeGood"] = SizeGood;
                        break;

                    case Good_types.Prod:
                        document["Name"]    = NameGood;
                        document["Value"]   = ValueGood;
                        document["Type"]    = CurrentType;
                        document["ExpDate"] = ExpDate;
                        break;

                    case Good_types.Alkogol:
                        document["Name"]    = NameGood;
                        document["Value"]   = ValueGood;
                        document["Type"]    = CurrentType;
                        document["ExpDate"] = ExpDate;
                        document["Alco"]    = Alco;
                        break;
                    }
                    await goods.ReplaceOneAsync(new BsonDocument("_id", CurrentId), document);
                }
            }
            catch
            {
            }
            finally
            {
                Close();
            }
        }
示例#10
0
        public static async Task <int> GridFSAddAsync(MongodbHostOptions host, T t)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                return(1);
            }
            catch
            {
                return(0);
            }
        }
示例#11
0
        /// <summary>
        /// 异步根据条件获取总数
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">条件</param>
        /// <returns></returns>
        public static async Task <long> CountAsync(MongodbHost host, FilterDefinition <T> filter)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                return(await client.CountAsync(filter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#12
0
        public void TestDescribeInstances()
        {
            //mongo-c2eirq2e84
            MongodbClient            mongodbClient = GetMongodbClient();
            DescribeInstancesRequest request       = new DescribeInstancesRequest();

            request.PageNumber = 1;
            request.PageSize   = 100;
            request.RegionId   = "cn-north-1";
            var response = mongodbClient.DescribeInstances(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#13
0
        /// <summary>
        /// 根据条件获取总数
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">条件</param>
        /// <returns></returns>
        public static long Count(MongodbHost host, FilterDefinition <T> filter)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                return(client.Count(filter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#14
0
        /// <summary>
        /// 异步删除多条数据
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">删除的条件</param>
        /// <returns></returns>
        public static async Task <DeleteResult> DeleteManyAsync(MongodbHostOptions host, FilterDefinition <T> filter)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                return(await client.DeleteManyAsync(filter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#15
0
        /// <summary>
        /// 删除一条数据
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">删除的条件</param>
        /// <returns></returns>
        public static DeleteResult DeleteMany(MongodbHostOptions host, FilterDefinition <T> filter)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                return(client.DeleteMany(filter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#16
0
        public void TestModifyInstanceSpec()
        {
            MongodbClient             mongodbClient = GetMongodbClient();
            ModifyInstanceSpecRequest request       = new ModifyInstanceSpecRequest();

            request.InstanceId        = "mongo-hfu1w2uhbc";
            request.RegionId          = "cn-north-1";
            request.InstanceStorageGB = 20;
            request.InstanceClass     = "mongo.s1.small";
            var response = mongodbClient.ModifyInstanceSpec(request).Result;

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }
示例#17
0
        /// <summary>
        /// 批量插入
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="t">实体集合</param>
        /// <returns></returns>
        public static int InsertMany(MongodbHost host, List <T> t)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                client.InsertMany(t);
                return(1);
            }
            catch (Exception ex)
            {
                return(0);
            }
        }
示例#18
0
        /// <summary>
        /// 添加一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <returns></returns>
        public static int Add(MongodbHostOptions host, T t)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                client.InsertOne(t);
                return(1);
            }
            catch
            {
                return(0);
            }
        }
示例#19
0
        /// <summary>
        /// 删除一条数据
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="id">objectId</param>
        /// <returns></returns>
        public static DeleteResult Delete(MongodbHostOptions host, string id)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                FilterDefinition <T> filter = Builders <T> .Filter.Eq("_id", new ObjectId(id));

                return(client.DeleteOne(filter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#20
0
        /// <summary>
        /// 异步添加一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <returns></returns>
        public static async Task <int> AddAsync(MongodbHostOptions host, T t)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                await client.InsertOneAsync(t);

                return(1);
            }
            catch
            {
                return(0);
            }
        }
示例#21
0
        /// <summary>
        /// 异步添加一条数据
        /// </summary>
        /// <param name="t">添加的实体</param>
        /// <param name="host">mongodb连接信息</param>
        /// <returns></returns>
        public static async Task <bool> AddAsync(MongodbHost host, T t)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                await client.InsertOneAsync(t);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
示例#22
0
        /// <summary>
        /// 异步批量插入
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="t">实体集合</param>
        /// <returns></returns>
        public static async Task <int> InsertManyAsync(MongodbHost host, List <T> t)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                await client.InsertManyAsync(t);

                return(1);
            }
            catch
            {
                return(0);
            }
        }
示例#23
0
        /// <summary>
        /// 异步删除一条数据
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="id">objectId</param>
        /// <returns></returns>
        public static async Task <DeleteResult> DeleteAsync(MongodbHostOptions host, string id)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                //修改条件
                FilterDefinition <T> filter = Builders <T> .Filter.Eq("_id", new ObjectId(id));

                return(await client.DeleteOneAsync(filter));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#24
0
        /// <summary>
        /// 异步根据条件获取总数
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">条件</param>
        /// <returns></returns>
        public static async Task <long> CountAsync(MongodbHostOptions host, FilterDefinition <T> filter)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

#pragma warning disable CS0618 // 类型或成员已过时
                return(await client.CountAsync(filter));

#pragma warning restore CS0618 // 类型或成员已过时
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#25
0
        /// <summary>
        /// 分页查询集合
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">查询条件</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">页容量</param>
        /// <param name="count">总条数</param>
        /// <param name="field">要查询的字段,不写时查询全部</param>
        /// <param name="sort">要排序的字段</param>
        /// <returns></returns>
        public static List <T> FindListByPage(MongodbHostOptions host, FilterDefinition <T> filter, int pageIndex, int pageSize, out long count, string[] field = null, SortDefinition <T> sort = null)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

#pragma warning disable CS0618 // 类型或成员已过时
                count = client.Count(filter);
#pragma warning restore CS0618 // 类型或成员已过时
                //不指定查询字段
                if (field == null || field.Length == 0)
                {
                    if (sort == null)
                    {
                        return(client.Find(filter).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList());
                    }
                    //进行排序
                    return(client.Find(filter).Sort(sort).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList());
                }

                //制定查询字段
                var fieldList = new List <ProjectionDefinition <T> >();
                for (int i = 0; i < field.Length; i++)
                {
                    fieldList.Add(Builders <T> .Projection.Include(field[i].ToString()));
                }
                var projection = Builders <T> .Projection.Combine(fieldList);

                fieldList?.Clear();

                //不排序
                if (sort == null)
                {
                    return(client.Find(filter).Project <T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList());
                }

                //排序查询
                return(client.Find(filter).Sort(sort).Project <T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#26
0
        /// <summary>
        /// 异步分页查询集合
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">查询条件</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">页容量</param>
        /// <param name="field">要查询的字段,不写时查询全部</param>
        /// <param name="sort">要排序的字段</param>
        /// <returns></returns>
        public static async Task <List <T> > FindListByPageAsync(MongodbHostOptions host, FilterDefinition <T> filter, int pageIndex, int pageSize, string[] field = null, SortDefinition <T> sort = null)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                //不指定查询字段
                if (field == null || field.Length == 0)
                {
                    if (sort == null)
                    {
                        return(await client.Find(filter).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync());
                    }
                    //进行排序
                    return(await client.Find(filter).Sort(sort).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync());
                }

                //制定查询字段
                var fieldList = new List <ProjectionDefinition <T> >();
                for (int i = 0; i < field.Length; i++)
                {
                    fieldList.Add(Builders <T> .Projection.Include(field[i].ToString()));
                }
                var projection = Builders <T> .Projection.Combine(fieldList);

                fieldList?.Clear();

                //不排序
                if (sort == null)
                {
                    return(await client.Find(filter).Project <T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync());
                }

                //排序查询
                return(await client.Find(filter).Sort(sort).Project <T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#27
0
        /// <summary>
        /// 查询集合
        /// </summary>
        /// <param name="host">mongodb连接信息</param>
        /// <param name="filter">查询条件</param>
        /// <param name="field">要查询的字段,不写时查询全部</param>
        /// <param name="sort">要排序的字段</param>
        /// <returns></returns>
        public static List <T> FindList(MongodbHostOptions host, FilterDefinition <T> filter, string[] field = null, SortDefinition <T> sort = null)
        {
            try
            {
                var client = MongodbClient <T> .MongodbInfoClient(host);

                //不指定查询字段
                if (field == null || field.Length == 0)
                {
                    if (sort == null)
                    {
                        return(client.Find(filter).ToList());
                    }
                    //进行排序
                    return(client.Find(filter).Sort(sort).ToList());
                }

                //制定查询字段
                var fieldList = new List <ProjectionDefinition <T> >();
                for (int i = 0; i < field.Length; i++)
                {
                    fieldList.Add(Builders <T> .Projection.Include(field[i].ToString()));
                }
                var projection = Builders <T> .Projection.Combine(fieldList);

                fieldList?.Clear();
                if (sort == null)
                {
                    return(client.Find(filter).Project <T>(projection).ToList());
                }
                //排序查询
                return(client.Find(filter).Sort(sort).Project <T>(projection).ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// 更新会员预约单统计表(弃用的解决方法)
        /// </summary>
        /// <param name="orders"></param>
        private void UpdateMemberOrderStatistics(List <OrderUser> orders)
        {
            var days = DateTime.Now.DayOfYear % 180;
            //插入记录
            var coll = MongodbClient.Collection <MemberOrderStatisticsInfo>();
            List <MemberOrderStatisticsInfo> memberOrderStatisticss = new List <MemberOrderStatisticsInfo>();

            foreach (var item in orders)
            {
                //删除会员已有数据
                coll.DeleteMany(p => p.UserId == item.UserId && p.Days == days);

                //重新添加
                var memberOrderStatistics = new MemberOrderStatisticsInfo()
                {
                    OrderNumber = item.OrderNumber,
                    UserId      = item.UserId
                };
                memberOrderStatistics.Days = days;
                memberOrderStatisticss.Add(memberOrderStatistics);
            }
            coll.InsertMany(memberOrderStatisticss);
        }
示例#29
0
        public void TestCreateInstance()
        {
            MongodbClient         mongodbClient = GetMongodbClient();
            CreateInstanceRequest request       = new CreateInstanceRequest();

            request.RegionId = "cn-north-1";
            DBInstanceSpec dbInstanceSpec = new DBInstanceSpec();

            dbInstanceSpec.InstanceClass     = "mongo.s1.small";
            dbInstanceSpec.InstanceStorageGB = 10;
            dbInstanceSpec.MultiAZ           = false;
            dbInstanceSpec.AzId = new List <string>()
            {
                "cn-north-1a", "cn-north-1a", "cn-north-1a"
            };
            dbInstanceSpec.VpcId        = "vpc-zo33sfjnbo";
            dbInstanceSpec.SubnetId     = "subnet-j0yka3pkcu";
            dbInstanceSpec.Password     = "******";
            dbInstanceSpec.InstanceName = "dotnetsdktest";
            request.InstanceSpec        = dbInstanceSpec;
            var response = mongodbClient.CreateInstance(request);

            _output.WriteLine(JsonConvert.SerializeObject(response));
        }