Explorar o código

mongo索引异步

懒得勤快 %!s(int64=7) %!d(string=hai) anos
pai
achega
8bb24fcbd1

+ 3 - 3
Masuit.Tools.NoSQL.MongoDBClient.Core/Masuit.Tools.NoSQL.MongoDBClient.Core.csproj

@@ -2,7 +2,7 @@
 
 
   <PropertyGroup>
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
     <TargetFramework>netstandard2.0</TargetFramework>
-    <Version>1.8.4</Version>
+    <Version>1.8.5</Version>
     <Authors>懒得勤快</Authors>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Company>masuit.com</Company>
     <Description>包含MongoDB的所有的增删查改。
     <Description>包含MongoDB的所有的增删查改。
@@ -13,8 +13,8 @@
     <PackageTags>Masuit.Tools</PackageTags>
     <PackageTags>Masuit.Tools</PackageTags>
     <PackageReleaseNotes>如有问题请联系QQ:1170397736,或者到项目的github反馈问题。</PackageReleaseNotes>
     <PackageReleaseNotes>如有问题请联系QQ:1170397736,或者到项目的github反馈问题。</PackageReleaseNotes>
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
-    <AssemblyVersion>1.8.4.0</AssemblyVersion>
-    <FileVersion>1.8.4.0</FileVersion>
+    <AssemblyVersion>1.8.5.0</AssemblyVersion>
+    <FileVersion>1.8.5.0</FileVersion>
   </PropertyGroup>
   </PropertyGroup>
 
 
   <ItemGroup>
   <ItemGroup>

+ 81 - 1
Masuit.Tools.NoSQL.MongoDBClient.Core/MongoDbClient.cs

@@ -999,7 +999,28 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
                     return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
                     return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
                 }
                 }
             }
             }
-            return String.Empty;
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 创建索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> CreateIndexAsync(string collection, string index, bool asc = true)
+        {
+            IMongoIndexManager<BsonDocument> mgr = Database.GetCollection<BsonDocument>(collection).Indexes;
+            var list = mgr.List();
+            while (list.MoveNext())
+            {
+                if (!list.Current.Any(doc => doc["name"].AsString.StartsWith(index)))
+                {
+                    return await mgr.CreateOneAsync(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
+                }
+            }
+            return string.Empty;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -1015,6 +1036,19 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
             return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
         }
         }
 
 
+        /// <summary>
+        /// 更新索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> UpdateIndexAsync(string collection, string index, bool asc = true)
+        {
+            IMongoIndexManager<BsonDocument> mgr = Database.GetCollection<BsonDocument>(collection).Indexes;
+            return await mgr.CreateOneAsync(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
+        }
+
         /// <summary>
         /// <summary>
         /// 删除索引
         /// 删除索引
         /// </summary>
         /// </summary>
@@ -1026,6 +1060,17 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             Database.GetCollection<BsonDocument>(collection).Indexes.DropOne(index);
             Database.GetCollection<BsonDocument>(collection).Indexes.DropOne(index);
         }
         }
 
 
+        /// <summary>
+        /// 删除索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <returns></returns>
+        public void DropIndexAsync(string collection, string index)
+        {
+            Database.GetCollection<BsonDocument>(collection).Indexes.DropOneAsync(index);
+        }
+
         /// <summary>
         /// <summary>
         /// 创建索引
         /// 创建索引
         /// </summary>
         /// </summary>
@@ -1048,6 +1093,28 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return String.Empty;
             return String.Empty;
         }
         }
 
 
+        /// <summary>
+        /// 创建索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <param name="key"></param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> CreateIndexAsync<T>(string collection, string index, Expression<Func<T, object>> key, bool asc = true)
+        {
+            IMongoIndexManager<T> mgr = Database.GetCollection<T>(collection).Indexes;
+            var list = mgr.List();
+            while (list.MoveNext())
+            {
+                if (!list.Current.Any(doc => doc["name"].AsString.StartsWith(index)))
+                {
+                    return await mgr.CreateOneAsync(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
+                }
+            }
+            return String.Empty;
+        }
+
         /// <summary>
         /// <summary>
         /// 更新索引
         /// 更新索引
         /// </summary>
         /// </summary>
@@ -1061,6 +1128,19 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return mgr.CreateOne(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
             return mgr.CreateOne(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
         }
         }
 
 
+        /// <summary>
+        /// 更新索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="key"></param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> UpdateIndexAsync<T>(string collection, Expression<Func<T, object>> key, bool asc = true)
+        {
+            IMongoIndexManager<T> mgr = Database.GetCollection<T>(collection).Indexes;
+            return await mgr.CreateOneAsync(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
+        }
+
         #endregion
         #endregion
     }
     }
 }
 }

+ 81 - 1
Masuit.Tools.NoSQL.MongoDBClient/MongoDbClient.cs

@@ -998,7 +998,28 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
                     return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
                     return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
                 }
                 }
             }
             }
-            return String.Empty;
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 创建索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> CreateIndexAsync(string collection, string index, bool asc = true)
+        {
+            IMongoIndexManager<BsonDocument> mgr = Database.GetCollection<BsonDocument>(collection).Indexes;
+            var list = mgr.List();
+            while (list.MoveNext())
+            {
+                if (!list.Current.Any(doc => doc["name"].AsString.StartsWith(index)))
+                {
+                    return await mgr.CreateOneAsync(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
+                }
+            }
+            return string.Empty;
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -1014,6 +1035,19 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
             return mgr.CreateOne(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
         }
         }
 
 
+        /// <summary>
+        /// 更新索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> UpdateIndexAsync(string collection, string index, bool asc = true)
+        {
+            IMongoIndexManager<BsonDocument> mgr = Database.GetCollection<BsonDocument>(collection).Indexes;
+            return await mgr.CreateOneAsync(asc ? Builders<BsonDocument>.IndexKeys.Ascending(doc => doc[index]) : Builders<BsonDocument>.IndexKeys.Descending(doc => doc[index]));
+        }
+
         /// <summary>
         /// <summary>
         /// 删除索引
         /// 删除索引
         /// </summary>
         /// </summary>
@@ -1025,6 +1059,17 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             Database.GetCollection<BsonDocument>(collection).Indexes.DropOne(index);
             Database.GetCollection<BsonDocument>(collection).Indexes.DropOne(index);
         }
         }
 
 
+        /// <summary>
+        /// 删除索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <returns></returns>
+        public void DropIndexAsync(string collection, string index)
+        {
+            Database.GetCollection<BsonDocument>(collection).Indexes.DropOneAsync(index);
+        }
+
         /// <summary>
         /// <summary>
         /// 创建索引
         /// 创建索引
         /// </summary>
         /// </summary>
@@ -1047,6 +1092,28 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return String.Empty;
             return String.Empty;
         }
         }
 
 
+        /// <summary>
+        /// 创建索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="index">索引键</param>
+        /// <param name="key"></param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> CreateIndexAsync<T>(string collection, string index, Expression<Func<T, object>> key, bool asc = true)
+        {
+            IMongoIndexManager<T> mgr = Database.GetCollection<T>(collection).Indexes;
+            var list = mgr.List();
+            while (list.MoveNext())
+            {
+                if (!list.Current.Any(doc => doc["name"].AsString.StartsWith(index)))
+                {
+                    return await mgr.CreateOneAsync(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
+                }
+            }
+            return String.Empty;
+        }
+
         /// <summary>
         /// <summary>
         /// 更新索引
         /// 更新索引
         /// </summary>
         /// </summary>
@@ -1060,6 +1127,19 @@ namespace Masuit.Tools.NoSQL.MongoDBClient
             return mgr.CreateOne(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
             return mgr.CreateOne(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
         }
         }
 
 
+        /// <summary>
+        /// 更新索引
+        /// </summary>
+        /// <param name="collection">集合名</param>
+        /// <param name="key"></param>
+        /// <param name="asc"></param>
+        /// <returns></returns>
+        public async Task<string> UpdateIndexAsync<T>(string collection, Expression<Func<T, object>> key, bool asc = true)
+        {
+            IMongoIndexManager<T> mgr = Database.GetCollection<T>(collection).Indexes;
+            return await mgr.CreateOneAsync(asc ? Builders<T>.IndexKeys.Ascending(key) : Builders<T>.IndexKeys.Descending(key));
+        }
+
         #endregion
         #endregion
     }
     }
 }
 }