using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using MongoDB.Bson; using MongoDB.Driver; namespace LolDataRequestLib { class ObjectDataRequest : ARequestData { protected override void requestDataMongoDB() { try { //var subFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize("{'eventDocument.gameTime' : {$gt : " + calculatedTime + " }}"); var subFilterMonsterSort = //Builders.Filter.ElemMatch("eventDocument", Builders.Filter.Or( Builders.Filter.Eq(e => e["eventDocument.monsterType"], "dragon"), Builders.Filter.Eq(e => e["eventDocument.monsterType"], "riftHerald"), Builders.Filter.Eq(e => e["eventDocument.monsterType"], "baron"), Builders.Filter.Eq(e => e["eventDocument.monsterType"], "VoidGrub"), Builders.Filter.Eq(e => e["eventDocument.monsterType"], "RuinousAtakhan"), Builders.Filter.Eq(e => e["eventDocument.monsterType"], "VoraciousAtakhan"), Builders.Filter.Eq(e => e["eventDocument.monsterType"], "ThornboundAtakhan") ); //var subFilterGameID = Builders.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID); var filter = Builders.Filter.And(subFilterMonsterSort); //var filter = Builders.Filter.And(subFilterGameID, subFilterMonsterSort); //var filter = Builders.Filter.And(subFilterGameID); var projection = Builders.Projection .Exclude("_id") .Include("eventDocument"); List documents = eventDataBase.GetCollection(this.mCollectionName) .Find(filter) .SortByDescending(x => x["sequenceIndex"]) .Project(projection) .ToList(); if (documents.Count == 0) { mUpdatedBsonValue = null; return; } BsonDocument rtnValue = new BsonDocument(); foreach (BsonDocument item in documents) { rtnValue.Add(item["eventDocument"]["sequenceIndex"].ToString(), item["eventDocument"].ToBsonDocument()); } rtnValue.Add("sequenceIndex", documents.First()["eventDocument"]["sequenceIndex"].ToInt32()); mUpdatedBsonValue = rtnValue; } catch(Exception ex) { } } } }