public override async ETTask Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { int s = 0; string[] st = LSS.Split('|'); Json = st[0]; int.TryParse(st[1], out s); skip = s; int.TryParse(st[2], out s); limit = s; sort = st[3]; //Log.Debug("DBQueryLSSJsonTask Json: " + Json); //Log.Debug("DBQueryLSSJsonTask 从第几个拿skip: " + skip); //Log.Debug("DBQueryLSSJsonTask 获取多少个limit: "+limit); //Log.Debug("DBQueryLSSJsonTask Sort: "+ sort); // 执行查询数据库任务 FilterDefinition <ComponentWithId> filterDefinition = new JsonFilterDefinition <ComponentWithId>(this.Json); IAsyncCursor <ComponentWithId> cursor = await dbComponent.GetCollection(this.CollectionName).Find(filterDefinition).Skip(skip).Limit(limit).Sort(sort).ToCursorAsync(); List <ComponentWithId> components = await cursor.ToListAsync(); this.Tcs.SetResult(components); } catch (Exception e) { this.Tcs.SetException(new Exception($"查询数据库异常! {CollectionName} {this.Json}", e)); } }
public ItemList Query(string collection, DataQuery query) { FilterDefinition <BsonDocument> filter = FilterDefinition <BsonDocument> .Empty; if (query.RawQuery != null) { filter = new JsonFilterDefinition <BsonDocument>(query.RawQuery); } InvokeAlterQuery(collection, filter); IFindFluent <BsonDocument, BsonDocument> results = _mongoService .GetCollection <BsonDocument>(collection).Find <BsonDocument>(filter) .Skip((query.PageNumber - 1) * query.PageSize) .Limit(query.PageSize); long count = Count(collection, filter); List <BsonDocument> list = results.ToList(); //sanitize id format foreach (BsonDocument item in list) { item["_id"] = item["_id"].ToString(); } string json = list.ToJson(js); return(new ItemList(JArray.Parse(json), (int)count, query.PageNumber, query.PageSize)); }
public ItemList Query(string collection, DataQuery query) { FilterDefinition <BsonDocument> filter = FilterDefinition <BsonDocument> .Empty; var dataContext = new Dictionary <string, object>(); dataContext["expando"] = query.Expando; if (query.RawQuery != null) { filter = new JsonFilterDefinition <BsonDocument>(query.RawQuery); } InvokeAlterQuery(collection, filter); IFindFluent <BsonDocument, BsonDocument> results = _mongoService .GetCollection <BsonDocument>(collection).Find <BsonDocument>(filter) .Skip((query.PageNumber - 1) * query.PageSize) .Limit(query.PageSize); if (query.Sort != null) { var sort = new SortDefinitionBuilder <BsonDocument>(); SortDefinition <BsonDocument> sortDef = null; foreach (var sortable in query.Sort) { FieldDefinition <BsonDocument> field = sortable.Field; if (sortable.Ascending) { sortDef = (sortDef == null) ? sort.Ascending(field) : sortDef.Ascending(field); } else { sortDef = (sortDef == null) ? sort.Descending(field) : sortDef.Descending(field); } } results = results.Sort(sortDef); } long count = Count(collection, filter); List <BsonDocument> list = results.ToList(); //sanitize id format foreach (BsonDocument item in list) { item["_id"] = item["_id"].ToString(); } string json = list.ToJson(js); var result = JArray.Parse(json); for (int i = 0; i < result.Count; i++) { var node = (JObject)result[i]; InvokeProcess(collection, ref node, PipelineStage.PostOperation, DataOperation.Read, dataContext); } return(new ItemList(result, (int)count, query.PageNumber, query.PageSize)); }
public static async Task <long> QueryJsonCount <T>(this DBProxyComponent self, string json) { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); FilterDefinition <ComponentWithId> filterDefinition = new JsonFilterDefinition <ComponentWithId>(json); long count = await dbComponent.GetCollection(typeof(T).Name).CountAsync(filterDefinition); return(count); }
public async void GetCollection123456(string name) { IMongoCollection <ComponentWithId> ins = this.database.GetCollection <ComponentWithId>(name); FilterDefinition <ComponentWithId> filterDefinition = new JsonFilterDefinition <ComponentWithId>("{}"); SortDefinition <ComponentWithId> sortDefinition = new JsonSortDefinition <ComponentWithId>("{\"UserId\":1}"); IFindFluent <ComponentWithId, ComponentWithId> s = ins.Find(filterDefinition).Sort(sortDefinition).Limit(1); List <ComponentWithId> components33 = await s.ToCursor().ToListAsync(); }
public static async Task <List <T> > QueryJsonDB <T>(this DBProxyComponent self, string json) where T : ComponentWithId { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); FilterDefinition <T> filterDefinition = new JsonFilterDefinition <T>(json); IAsyncCursor <T> cursor = await dbComponent.GetDBDataCollection <T>(typeof(T).Name).FindAsync(filterDefinition); List <T> components = await cursor.ToListAsync(); return(components); }
public static async Task <List <T> > QueryJsonDBInfos <T>(this DBProxyComponent self, string time, long uid) { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); FilterDefinition <T> filterDefinition = new JsonFilterDefinition <T>($"{{CreateTime:/^{time}/,Uid:{uid}}}"); IAsyncCursor <T> cursor = await dbComponent.GetDBDataCollection <T>(typeof(T).Name).FindAsync(filterDefinition); List <T> components = await cursor.ToListAsync(); return(components); }
/// <summary> Gets all items in this collection asynchronously. </summary> /// <param name="jsonFilterDefinition"> A definition to filter in a json string the results. Defaults to an empty filter.</param> /// <param name="jsonSortingDefinition"> The sorting definition in a json string for the result. Defaults to sort ascending by Id.</param> /// <param name="page"> The requested page number. </param> /// <param name="pageSize"> The number of items per page.</param> /// <returns> /// An list that allows foreach to be used to process all items in this collection. /// </returns> public virtual async Task <long> Count(string jsonFilterDefinition) { JsonFilterDefinition <TEntity> filter = null; if (!string.IsNullOrEmpty(jsonFilterDefinition)) { filter = new JsonFilterDefinition <TEntity>(jsonFilterDefinition); } return(await Count(filterDefinition : filter)); }
public long Count(string collection, string query) { FilterDefinition <BsonDocument> filter = FilterDefinition <BsonDocument> .Empty; if (!string.IsNullOrWhiteSpace(query)) { filter = new JsonFilterDefinition <BsonDocument>(query); } return(Count(collection, filter)); }
public static async ETTask <List <T> > QueryJson <T>(this DBComponent self, long taskId, string json, string collection = null) where T : Entity { using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.DB, RandomHelper.RandInt64() % DBComponent.TaskCount)) { FilterDefinition <T> filterDefinition = new JsonFilterDefinition <T>(json); IAsyncCursor <T> cursor = await self.GetCollection <T>(collection).FindAsync(filterDefinition); return(await cursor.ToListAsync()); } }
public async Task <IEnumerable <Report> > GetReportsForUserPage(string userName, int pageNumber, int reportsInPage) { FilterDefinition <Report> reportFilter = new JsonFilterDefinition <Report>($"{{FirstUserName: \"{userName}\"}}"); return(await GetPage( reportFilter, pageNumber, reportsInPage ).ConfigureAwait(false)); }
public static void TestMONGO() { foreach (var file in Directory.EnumerateFiles(@"C:\Users\micjan11\Desktop\db\mongo\")) { var command = File.ReadAllText(file); var xd = new JsonFilterDefinition <Record>(command); var sum = Test(() => ReadFromMongoDB(xd), 1); Console.WriteLine($"MONGO {file}: {sum}"); } }
/// <summary> Gets all items in this collection asynchronously. </summary> /// <param name="jsonFilterDefinition"> A definition to filter in a json string the results. Defaults to an empty filter.</param> /// <returns> /// An list that allows foreach to be used to process all items in this collection. /// </returns> public virtual async Task <IList <TEntity> > GetAll(string jsonFilterDefinition) { JsonFilterDefinition <TEntity> filter = null; if (!string.IsNullOrEmpty(jsonFilterDefinition)) { filter = new JsonFilterDefinition <TEntity>(jsonFilterDefinition); } return(await GetAll(filterDefinition : filter)); }
async Task UpdateLastReadTime(string id, DateTimeOffset now) { var gridFsFileInfo = await GetGridFsFileInfo(id); gridFsFileInfo.Metadata[MetadataKeys.ReadTime] = now.ToString("o"); var files = _database.GetCollection <BsonDocument>($"{_bucketName}.files"); var criteria = new JsonFilterDefinition <BsonDocument>($@"{{'filename': '{id}'}}"); var update = new JsonUpdateDefinition <BsonDocument>($@"{{$set: {{'metadata.{MetadataKeys.ReadTime}': '{now:o}'}} }}"); await files.UpdateOneAsync(criteria, update); }
public override async ETTask Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { FilterDefinition <ComponentWithId> filterDefinition = new JsonFilterDefinition <ComponentWithId>(this.Json); long count = await dbComponent.GetCollection(this.CollectionName).CountDocumentsAsync(filterDefinition); this.Tcs.SetResult(count); } catch (Exception e) { this.Tcs.SetException(new Exception($"查询数据库异常! {CollectionName} {this.Json}", e)); } }
public override async ETTask Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { FilterDefinition <ComponentWithId> filter = new JsonFilterDefinition <ComponentWithId>(this.Json); await dbComponent.GetCollection(this.CollectionName).DeleteManyAsync(filter); this.Tcs.SetResult(); } catch (Exception e) { this.Tcs.SetException(new Exception($"删除数据库异常! {CollectionName} {this.Json}", e)); } }
public override async Task Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { // 执行查询数据库任务 FilterDefinition <Component> filterDefinition = new JsonFilterDefinition <Component>(this.Json); List <Component> disposers = await dbComponent.GetCollection(this.CollectionName).FindAsync(filterDefinition).Result.ToListAsync(); this.Tcs.SetResult(disposers); } catch (Exception e) { this.Tcs.SetException(new Exception($"查询数据库异常! {CollectionName} {this.Json}", e)); } }
/// <summary> Gets all items in this collection asynchronously. </summary> /// <param name="jsonFilterDefinition"> A definition to filter in a json string the results. Defaults to an empty filter.</param> /// <param name="jsonSortingDefinition"> The sorting definition in a json string for the result. Defaults to sort ascending by Id.</param> /// <param name="page"> The requested page number. </param> /// <param name="pageSize"> The number of items per page.</param> /// <returns> /// An list that allows foreach to be used to process all items in this collection. /// </returns> public virtual async Task <IList <TEntity> > GetAll(string jsonFilterDefinition, string jsonSortingDefinition, int?page = null, int?pageSize = null) { JsonFilterDefinition <TEntity> filter = null; if (!string.IsNullOrEmpty(jsonFilterDefinition)) { filter = new JsonFilterDefinition <TEntity>(jsonFilterDefinition); } JsonSortDefinition <TEntity> sorting = null; if (!string.IsNullOrEmpty(jsonSortingDefinition)) { sorting = new JsonSortDefinition <TEntity>(jsonSortingDefinition); } return(await GetAll(filterDefinition : filter, sortDefinition : sorting, page : page, pageSize : pageSize)); }
public async Task <object> DeleteBOTsAsync(List <string> bots) { var deleteBOTs = new List <string>(); foreach (var name in bots) { //var filter = Builders<BOT>.Filter // .Where(bo => bo.Name.ToLower() == name.ToLower()); var jsonFilter = $"{{'name':{{'$regex':'^{name}$','$options':'i'}}}}"; var filter = new JsonFilterDefinition <MongoDB.Bson.BsonDocument>(jsonFilter); var deleteResult = await this.BOTBsonDocumentCollection.DeleteOneAsync(filter); if (deleteResult.IsAcknowledged && deleteResult.DeletedCount > 0) { deleteBOTs.Add(name); } } return(deleteBOTs); }
public override async ETTask Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { // 执行查询数据库任务 FilterDefinition <ComponentWithId> filterDefinition = new JsonFilterDefinition <ComponentWithId>(this.Json); IAsyncCursor <ComponentWithId> cursor = await dbComponent.GetCollection(this.CollectionName).FindAsync(filterDefinition); List <ComponentWithId> components = await cursor.ToListAsync(); this.Tcs.SetResult(components); } catch (Exception e) { this.Tcs.SetException(new Exception($"查询数据库异常! {CollectionName} {this.Json}", e)); } }
public async ValueTask <IPaginationCollection <dynamic> > QueryAsync( string query, int?skip = null, int?limit = null, bool?withCount = null, string sortField = null, SortDirection?sortDirection = null, IDictionary <string, bool> selectFields = null) { try { query = ISODateHelper.EnsureDatetimeFieldsToISODate(query); Console.WriteLine("Executing query:"); Console.WriteLine(query); var filterDefinition = new JsonFilterDefinition <dynamic>(query); return(await this.ExecuteQueryAsync( filterDefinition, skip, limit, withCount, sortField, sortDirection, selectFields)); } catch (MongoCommandException ex) { switch (ex.Code) { case 31249: throw new SelectQueryPathCollisionException(ex); case 31254: throw new SelectQueryInclusionException(ex); default: throw; } } }
public async Task <object> SaveBOTsAsync(List <BOT> bots) { var saveBOTs = new List <string>(); var updateOptions = new UpdateOptions { IsUpsert = true }; foreach (var doc in bots) { //var filter = Builders<BOT>.Filter.Where(bot=>bot.Name.ToLower() == doc.Name.ToLower()); //var saveResult = await this.BOTCollection.ReplaceOneAsync(filter, doc, updateOptions); var jsonFilter = $"{{'name':{{'$regex':'^{doc.Name}$','$options':'i'}}}}"; var filter = new JsonFilterDefinition <MongoDB.Bson.BsonDocument>(jsonFilter); var saveResult = await this.BOTBsonDocumentCollection.ReplaceOneAsync(filter, this.ConvertFrom <BOT>(doc), updateOptions); if (saveResult.IsAcknowledged && (saveResult.ModifiedCount > 0 || saveResult.UpsertedId != null)) { saveBOTs.Add(doc.Name); } } return(saveBOTs); }
public override async ETTask Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { BsonDocument bsons = BsonSerializer.Deserialize <BsonDocument>(this.Json); string QueryJson = bsons["QueryJson"].ToJson(); var set = bsons["UpdateJson"]; bsons.Clear(); bsons["$set"] = set; string UpdateJson = bsons.ToJson(); FilterDefinition <ComponentWithId> queryFilter = new JsonFilterDefinition <ComponentWithId>(QueryJson); UpdateDefinition <ComponentWithId> updateFilter = new JsonUpdateDefinition <ComponentWithId>(UpdateJson); await dbComponent.GetCollection(this.CollectionName).UpdateOneAsync(queryFilter, updateFilter); this.Tcs.SetResult(); } catch (Exception e) { this.Tcs.SetException(new Exception($"更改数据库异常! {CollectionName} {this.Json}", e)); } }
public async Task <IEnumerable <Status> > GetAllSavedAsync(StatusListParams statusListParams) { var userFilter = new ExpressionFilterDefinition <Status>( x => x.SavedByUserId == statusListParams.SavedByUserId && x.CreatedById == statusListParams.CreatedByUserId); var maxIdFilter = new JsonFilterDefinition <Status>( "{ StatusId: { $lt: '" + statusListParams.MaxId + "' } }"); var complexFilter = string.IsNullOrEmpty(statusListParams.MaxId) ? userFilter : userFilter & maxIdFilter; var options = new FindOptions <Status> { Sort = Builders <Status> .Sort.Descending(x => x.StatusId), Limit = statusListParams.Count }; var savedStatuses = await this.dbContext.Statuses.FindAsync(complexFilter, options); return(savedStatuses.ToEnumerable()); }
private static string InjectValueToQuery <TDto>(string query, string key, string value) { var filterDefinition = new JsonFilterDefinition <TDto>(query); var queryJObject = JObject.Parse(filterDefinition.Json); if (queryJObject.ContainsKey("where")) { if (queryJObject["where"] is JObject whereClauseNode) { if (whereClauseNode.ContainsKey(key)) { whereClauseNode[key] = value; } else { whereClauseNode.Add(key, value); } return(queryJObject.ToString()); } } else { if (queryJObject.ContainsKey(key)) { queryJObject[key] = value; } else { queryJObject.Add(key, value); } return(queryJObject.ToString()); } return(query); }
//刷新周排行榜 1,周财富榜,2,周战绩榜 public static async Task <List <Log_Rank> > QueryJsonRank(this DBProxyComponent self, int type) { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); FilterDefinition <Log_Rank> filterDefinition = new JsonFilterDefinition <Log_Rank>($"{{}}"); FilterDefinition <Log_Rank> filterEmpty = Builders <Log_Rank> .Filter.Empty; SortDefinition <Log_Rank> sortDefinition = Builders <Log_Rank> .Sort.Descending(""); IAsyncCursor <Log_Rank> asyncCursor = await dbComponent.GetDBDataCollection <Log_Rank>(typeof(Log_Rank).Name).FindAsync(filterDefinition); List <Log_Rank> components = new List <Log_Rank>(); if (type == 1) { components = await dbComponent.GetDBDataCollection <Log_Rank>(typeof(Log_Rank).Name).Find(filterDefinition).SortByDescending(a => a.Wealth).Limit(50).ToListAsync(); } else if (type == 2) { components = await dbComponent.GetDBDataCollection <Log_Rank>(typeof(Log_Rank).Name).Find(filterDefinition).SortByDescending(a => a.WinGameCount).Limit(50).ToListAsync(); } return(components); }
public override async Task Run() { DBComponent dbComponent = Game.Scene.GetComponent <DBComponent>(); try { // 执行查询数据库任务 // FilterDefinition<ComponentWithId> filterDefinition = new JsonFilterDefinition<ComponentWithId>(this.QueryJson); // IAsyncCursor<ComponentWithId> cursor = await dbComponent.GetCollection(this.CollectionName).FindAsync(filterDefinition); // List<ComponentWithId> components = await cursor.ToListAsync(); // this.Tcs.SetResult(components); FilterDefinition <ComponentWithId> filterDefinition = new JsonFilterDefinition <ComponentWithId>(this.QueryJson); SortDefinition <ComponentWithId> sortDefinition = new JsonSortDefinition <ComponentWithId>(this.SortJson); IFindFluent <ComponentWithId, ComponentWithId> ifindiluent = dbComponent.GetCollection(this.CollectionName).Find(filterDefinition).Sort(sortDefinition).Limit(this.Count); List <ComponentWithId> components = await ifindiluent.ToCursor().ToListAsync(); this.Tcs.SetResult(components); } catch (Exception e) { this.Tcs.SetException(new Exception($"查询数据库异常! {CollectionName} {this.QueryJson}", e)); } }
public async Task <int> GetReportsAmountForUser(string user) { FilterDefinition <Report> reportFilter = new JsonFilterDefinition <Report>($"{{FirstUserName: \"{user}\"}}"); return(await GetReportsAmount(reportFilter)); }
public async ValueTask <long> CountAsync(string query) { var filterDefinition = new JsonFilterDefinition <dynamic>(query); return(await this.Collection.CountDocumentsAsync(filterDefinition)); }
public long Count(string query) { var filterDefinition = new JsonFilterDefinition <dynamic>(query); return(this.Collection.CountDocuments(filterDefinition)); }