public void insert() { bool b = db._mongoCollection.Database.CollectionExists("MemberIntegralLock"); this.created = DateTime.Now; db.Insert(this); if (!b) { IndexKeysBuilder keys = new IndexKeysBuilder(); keys.Descending("created"); keys.Ascending("uid"); keys.Ascending("mte"); db._mongoCollection.CreateIndex(keys); } }
/// <summary> /// Verify all required <see cref="IMongoIndexKeys"/> are defined and ready to go. /// </summary> protected virtual void VerifyIndexes <TEntity>(MongoCollection <TEntity> collection) { Type entityType = typeof(TEntity); if (IndexTypesByEntityType.ContainsKey(entityType)) { foreach (object untypedIndexType in IndexTypesByEntityType[entityType]) { var mongoIndex = (MongoIndex <TEntity>)untypedIndexType; var indexKeysBuilder = new IndexKeysBuilder(); if (mongoIndex.IsAcending) { indexKeysBuilder = indexKeysBuilder.Ascending(mongoIndex.Selectors.ToArray()); } else { indexKeysBuilder = indexKeysBuilder.Descending(mongoIndex.Selectors.ToArray()); } collection.CreateIndex ( indexKeysBuilder, IndexOptions .SetUnique(mongoIndex.IsUnique) .SetName(mongoIndex.Name) ); } } }
public void CreateIndex <T>(Tuple <string, bool>[] names, bool background = true, TimeSpan ttl = new TimeSpan(), bool unique = false, bool dropDups = false, bool sparse = false) { var ascending = new List <string>(); var descending = new List <string>(); foreach (var n in names) { if (n.Item2) { ascending.Add(n.Item1); } else { descending.Add(n.Item1); } } var builder = new IndexKeysBuilder(); if (ascending.Count > 0) { builder = builder.Ascending(ascending.ToArray()); } if (descending.Count > 0) { builder = builder.Descending(descending.ToArray()); } _database.GetCollection <T>(typeof(T).Name).EnsureIndex(builder, IndexOptions.SetBackground(background) .SetTimeToLive(ttl) .SetUnique(unique) .SetDropDups(dropDups) .SetSparse(sparse)); }
/// <summary> /// 添加索引 /// </summary> /// <param name="IdxOpt"></param> /// <param name="option"></param> /// <param name="currentCollection"></param> /// <returns></returns> public static bool CreateMongoIndex(IndexOption IdxOpt, IndexOptionsBuilder option, MongoCollection currentCollection, ref string errorMessage) { var mongoCol = currentCollection; var indexkeys = new IndexKeysBuilder(); if (!string.IsNullOrEmpty(IdxOpt.GeoSpatialHaystackKey)) { indexkeys.GeoSpatialHaystack(IdxOpt.GeoSpatialHaystackKey); } if (!string.IsNullOrEmpty(IdxOpt.GeoSpatialKey)) { indexkeys.GeoSpatial(IdxOpt.GeoSpatialKey); } if (!string.IsNullOrEmpty(IdxOpt.GeoSpatialSphericalKey)) { indexkeys.GeoSpatialSpherical(IdxOpt.GeoSpatialSphericalKey); } indexkeys.Ascending(IdxOpt.AscendingKey.ToArray()); indexkeys.Descending(IdxOpt.DescendingKey.ToArray()); indexkeys.Text(IdxOpt.TextKey.ToArray()); //CreateIndex失败的时候会出现异常! try { var result = mongoCol.CreateIndex(indexkeys, option); return(result.Response.GetElement("ok").Value.AsInt32 == 1); } catch (Exception ex) { errorMessage = ex.ToString(); return(false); } }
/// <summary> /// /// </summary> /// <param name="_columns"></param> /// <returns></returns> public static IMongoIndexKeys GetIndexKeys(IEnumerable <string> _columns) { string[] columns = _columns.ToArray(); IndexKeysBuilder ikb = new IndexKeysBuilder(); ikb.Ascending(columns); return(ikb); }
public static IndexKeysBuilder GetIndex(TaskQueue.TQItemSelector selector) { IndexKeysBuilder ikb = new IndexKeysBuilder(); foreach (KeyValuePair <string, TaskQueue.TQItemSelectorParam> kv in selector.parameters) { switch (kv.Value.ValueSet) { case TaskQueue.TQItemSelectorSet.Equals: Type kvt = kv.Value.Value.GetType(); if (kvt == typeof(bool)) { if ((bool)kv.Value.Value) { ikb = ikb.Ascending(kv.Key); } else { ikb = ikb.Descending(kv.Key); } } else { ikb = ikb.Ascending(kv.Key); } break; } } foreach (KeyValuePair <string, TaskQueue.TQItemSelectorParam> kv in selector.parameters) { switch (kv.Value.ValueSet) { case TaskQueue.TQItemSelectorSet.Ascending: ikb = ikb.Ascending(kv.Key); break; case TaskQueue.TQItemSelectorSet.Descending: ikb = ikb.Descending(kv.Key); break; } } return(ikb); }
/// <summary> /// 添加索引 /// </summary> /// <param name="AscendingKey"></param> /// <param name="DescendingKey"></param> /// <param name="option"></param> /// <returns></returns> public static Boolean CreateMongoIndex(String[] AscendingKey, String[] DescendingKey, IndexOptionsBuilder option) { MongoCollection mongoCol = SystemManager.GetCurrentCollection(); IndexKeysBuilder indexkeys = new IndexKeysBuilder(); indexkeys.Ascending(AscendingKey); indexkeys.Descending(DescendingKey); mongoCol.CreateIndex(indexkeys, option); return(true); }
protected override void OK() { var b = new IndexKeysBuilder(); b.Ascending(SelectedField); var b1 = new IndexOptionsBuilder(); b1.SetName(IndexName); _coll.CreateIndex(b, b1); ExistsIndexes = new ObservableCollection <IndexInfo>(GetExistsIndexes()); }
public MongoIndexKeysWarpper Ascending(params string[] names) { if (MongoIndexKeys == null) { MongoIndexKeys = IndexKeys.Ascending(names); } else { MongoIndexKeys = MongoIndexKeys.Ascending(names); } return(this); }
public void EnsureIndex(Dictionary <string, object> matchData) { // matchKeys, Interval, Left IndexKeysBuilder ikb = new IndexKeysBuilder(); ikb = ikb.Ascending(matchData.Keys.ToArray()); CheckConnection(); Collection.EnsureIndex(ikb); // var indexE = IndexKeys <MongoRange> .Ascending(r => r.SecondsInterval).Ascending(r => r.Left); Collection.EnsureIndex(indexE); }
/// <summary> /// 添加索引 /// </summary> /// <param name="AscendingKey"></param> /// <param name="DescendingKey"></param> /// <param name="option"></param> /// <returns></returns> public static Boolean CreateMongoIndex(String[] AscendingKey, String[] DescendingKey, String GeoSpatialKey, IndexOptionsBuilder option) { MongoCollection mongoCol = SystemManager.GetCurrentCollection(); IndexKeysBuilder indexkeys = new IndexKeysBuilder(); if (!String.IsNullOrEmpty(GeoSpatialKey)) { indexkeys.GeoSpatial(GeoSpatialKey); } indexkeys.Ascending(AscendingKey); indexkeys.Descending(DescendingKey); mongoCol.EnsureIndex(indexkeys, option); return(true); }
private void CreateRoleIndexes() { var keys = new IndexKeysBuilder(); keys.Ascending("Name", "DomainId"); var options = new IndexOptionsBuilder(); options.SetSparse(true); options.SetUnique(true); var collection = _database.GetCollection <Role> ("roles"); collection.EnsureIndex(keys, options); }
private void CreateUserCardIndexes() { var keys = new IndexKeysBuilder(); keys.Ascending("PlaneswalkerId", "MultiverseId"); var options = new IndexOptionsBuilder(); options.SetSparse(true); options.SetUnique(true); var collection = database.GetCollection <UserCard>("user_cards"); collection.EnsureIndex(keys, options); }
private void CreateChangeRequestIndexes() { var keys = new IndexKeysBuilder(); keys.Ascending("Id"); var options = new IndexOptionsBuilder(); options.SetSparse(true); options.SetUnique(true); var collection = database.GetCollection <CardChange>("card_changes"); collection.EnsureIndex(keys, options); }
private void CreateAdminIndexes() { var keys = new IndexKeysBuilder(); keys.Ascending("DomainId", "ManagerId"); var options = new IndexOptionsBuilder(); options.SetSparse(true); options.SetUnique(true); var collection = _database.GetCollection <Administrator> ("administrators"); collection.EnsureIndex(keys, options); }
/// <summary> /// Ensures that the desired indexes exist and creates them if they don't exist. /// </summary> /// <param name="keynames">The indexed fields.</param> /// <param name="descending">Set to true to make index descending, false for ascending.</param> /// <param name="unique">Set to true to ensure index enforces unique values.</param> /// <param name="sparse">Set to true to specify the index is sparse.</param> /// <remarks> /// This is a convenience method for EnsureIndexes(IMongoIndexKeys keys, IMongoIndexOptions options). /// </remarks> public virtual void EnsureIndexes(IEnumerable <string> keynames, bool descending, bool unique, bool sparse) { var ixk = new IndexKeysBuilder(); if (descending) { ixk.Descending(keynames.ToArray()); } else { ixk.Ascending(keynames.ToArray()); } this.EnsureIndexes(ixk, new IndexOptionsBuilder().SetUnique(unique).SetSparse(sparse)); }
/// <summary> /// 添加索引 /// </summary> /// <param name="ascendingKey"></param> /// <param name="descendingKey"></param> /// <param name="geoSpatialKey"></param> /// <param name="option"></param> /// <param name="currentCollection"></param> /// <returns></returns> public static bool CreateMongoIndex(string[] ascendingKey, string[] descendingKey, string geoSpatialKey, IndexOptionsBuilder option, MongoCollection currentCollection) { var mongoCol = currentCollection; var indexkeys = new IndexKeysBuilder(); if (!string.IsNullOrEmpty(geoSpatialKey)) { indexkeys.GeoSpatial(geoSpatialKey); } indexkeys.Ascending(ascendingKey); indexkeys.Descending(descendingKey); mongoCol.CreateIndex(indexkeys, option); return(true); }
/// <summary> /// 设置索引 /// </summary> /// <param name="collectionName"></param> /// <param name="FieldName"></param> /// <param name="database"></param> public static void SetIndex(string collectionName, string FieldName, string database = "") { if (string.IsNullOrEmpty(database)) { database = _defaultDatabaseName; } MongoCollection col = GetDatabaseByType(database).GetCollection(collectionName); if (col.IndexExistsByName(FieldName)) { return; } var option = new IndexOptionsBuilder(); option.SetName(FieldName); var indexkeys = new IndexKeysBuilder(); indexkeys.Ascending(new string[] { FieldName }); col.CreateIndex(indexkeys, option); }
public static IndexKeysBuilder Ascending <T>(this IndexKeysBuilder mongoIndexKeys, params Expression <Func <T, object> >[] selectors) { var properties = new List <string>(); foreach (Expression <Func <T, object> > selector in selectors) { var selectorUnaryExpression = selector.Body as UnaryExpression; MemberExpression selectorMemberExpression; if (selectorUnaryExpression != null) { selectorMemberExpression = (MemberExpression)selectorUnaryExpression.Operand; } else { selectorMemberExpression = (MemberExpression)selector.Body; } string memberName = CheckForChildProperty(selectorMemberExpression); properties.Add(memberName); } return(mongoIndexKeys.Ascending(properties.ToArray())); }
/// <summary> /// 设定数据缓存时间(以创建时间为基础) /// </summary> /// <param name="collectionName"></param> /// <param name="ExpiresMinute"></param> /// <param name="database"></param> public static void SetCacheTime(string collectionName, int ExpiresMinute, string database = "") { if (string.IsNullOrEmpty(database)) { database = _defaultDatabaseName; } MongoCollection col = GetDatabaseByType(database).GetCollection(collectionName); if (col.IndexExistsByName("Cache")) { col.DropIndexByName("Cache"); } var option = new IndexOptionsBuilder(); option.SetTimeToLive(new TimeSpan(0, ExpiresMinute, 0)); option.SetName("Cache"); var indexkeys = new IndexKeysBuilder(); indexkeys.Ascending(new string[] { nameof(EntityBase.CreateDateTime) }); col.CreateIndex(indexkeys, option); }
private void CreateIndexBasicMode() { string indexName = txtBoxIndexName.Text; if (string.IsNullOrWhiteSpace(indexName)) { throw new Exception("Please enter an index name."); } var mongoCollection = MongoCollectionInfo.GetMongoCollection(); var indexes = mongoCollection.GetIndexes(); if (indexes != null && indexes.Any()) { if (indexes.ToList().Exists(i => i.Name == indexName)) { throw new Exception("An index with that name already exists."); } } var keys = GetChoosenKeys(); if (!keys.Any()) { throw new Exception("You must choose at least one key."); } var keyBuilder = new IndexKeysBuilder(); foreach (var key in keys) { if (key.SortType == 1) { keyBuilder = keyBuilder.Ascending(key.Key); } else if (key.SortType == -1) { keyBuilder = keyBuilder.Descending(key.Key); } else if (key.SortType == 2) { keyBuilder = keyBuilder.GeoSpatial(key.Key); } else if (key.SortType == 3) { keyBuilder = keyBuilder.GeoSpatialHaystack(key.Key); } } var optionBuilder = new IndexOptionsBuilder(); optionBuilder.SetUnique(checkBoxUnique.Checked); optionBuilder.SetBackground(checkBoxBackground.Checked); optionBuilder.SetDropDups(checkBoxUnique.Checked && checkBoxDropDups.Checked); optionBuilder.SetSparse(checkBoxSparse.Checked); optionBuilder.SetName(indexName); var writeConcernResult = mongoCollection.CreateIndex(keyBuilder, optionBuilder); if (writeConcernResult.HasLastErrorMessage) { throw new Exception(writeConcernResult.LastErrorMessage); } }
public MongoIndexKeysWarpper(string[] keys) { MongoIndexKeys = new IndexKeysBuilder(); MongoIndexKeys.Ascending(keys); }