internal string AddOrReplaceFlightGlobeDataBatch(string flightId, AircraftModel model, int startIndex, int endIndex, FlightDataEntities.GlobeData[] globedatas) { using (AircraftMongoDbDal dal = new AircraftMongoDbDal()) { MongoServer mongoServer = dal.GetMongoServer(); //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常 try {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息, //建议不要分表,存放在Common里面 MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, model); if (database != null) { MongoCollection<FlightDataEntities.GlobeData> modelCollection1 = dal.GetFlightGlobeDataMongoCollectionByFlight(database, flightId); IMongoQuery q1 = Query.EQ("FlightID", new MongoDB.Bson.BsonString(flightId)); IMongoQuery q2 = Query.GTE("Index", new MongoDB.Bson.BsonInt32(startIndex)); IMongoQuery q3 = Query.LTE("Index", new MongoDB.Bson.BsonInt32(endIndex)); IMongoQuery q4 = Query.EQ("AircraftModelName", new MongoDB.Bson.BsonString(model.ModelName)); IMongoQuery query = Query.And(q1, q2, q3, q4); modelCollection1.Remove(query); modelCollection1.InsertBatch(globedatas); } } catch (Exception e) { LogHelper.Error("AddOrReplaceFlightGlobeDataBatch", e); return e.Message; } } return string.Empty; }
internal GlobeData[] GetGlobeDatas(string flightID, AircraftModel model, int startIndex, int endIndex) { if (model == null || string.IsNullOrEmpty(model.ModelName) || string.IsNullOrEmpty(flightID)) { LogHelper.Warn("aircraftModel为空或aircraftModel.ModelName为空或FlightID为空(GetGlobeDatas)。", null); return null; } using (AircraftMongoDbDal dal = new AircraftMongoDbDal()) { MongoServer mongoServer = dal.GetMongoServer(); //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常 try {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑 MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, model); if (database != null) { MongoCollection<FlightDataEntities.GlobeData> modelCollection = dal.GetFlightGlobeDataMongoCollectionByFlight(database, flightID); List<IMongoQuery> qs = new List<IMongoQuery>(); IMongoQuery q1 = Query.EQ("FlightID", new MongoDB.Bson.BsonString(flightID)); IMongoQuery q2 = Query.GTE("Index", new MongoDB.Bson.BsonInt32(startIndex)); IMongoQuery q3 = Query.LTE("Index", new MongoDB.Bson.BsonInt32(endIndex)); IMongoQuery q4 = Query.EQ("AircraftModelName", new MongoDB.Bson.BsonString(model.ModelName)); IMongoQuery query = Query.And(q1, q2, q3, q4); var cursor = modelCollection.Find(query); var result = cursor.AsQueryable(); return result.ToArray(); } } catch (Exception e) { LogHelper.Error("GetGlobeDatas", e); } } return null; }