/// <summary> /// 删除一个架次相关记录,这是记录,需要重新定位数据库和Collection /// </summary> /// <param name="mongoServer"></param> /// <param name="flight"></param> private void RemoveRelatedRecords(MongoServer mongoServer, Flight flight, AircraftMongoDbDal dal, IMongoQuery flightIdQuery) {//TODO: try {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑 MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, flight.Aircraft.AircraftModel); if (database != null) { //删除判据记录 MongoCollection<FlightDataEntities.Decisions.DecisionRecord> modelCollection = dal.GetDecisionRecordMongoCollectionByFlight(database, flight); modelCollection.Remove(flightIdQuery); //删除Level1记录 MongoCollection<FlightDataEntities.Level1FlightRecord> modelCollection1 = dal.GetLevel1FlightRecordMongoCollectionByFlight(database, flight); modelCollection1.Remove(flightIdQuery); //删除LevelTop记录 MongoCollection<FlightDataEntities.LevelTopFlightRecord> modelCollection2 = dal.GetLevelTopFlightRecordMongoCollectionByFlight(database, flight); modelCollection2.Remove(flightIdQuery); //删除FlightRawDataRelationPoint记录 MongoCollection<FlightDataEntities.FlightRawDataRelationPoint> modelCollection3 = dal.GetFlightRawDataRelationPointMongoCollectionByFlight(database, flight); modelCollection3.Remove(flightIdQuery); //删除FlightConditionDecisionRecord记录 MongoCollection<FlightDataEntities.Decisions.DecisionRecord> modelCollection4 = dal.GetFlightConditionDecisionRecordMongoCollectionByFlight(database, flight); modelCollection4.Remove(flightIdQuery); //删除FlightRawDataRelationPoint记录 MongoCollection<FlightDataEntities.ExtremumPointInfo> modelCollection5 = dal.GetFlightExtremeMongoCollectionByFlight(database, flight); modelCollection5.Remove(flightIdQuery); //删除FlightExtreme记录 MongoCollection<FlightDataEntities.ExtremumPointInfo> modelCollection6 = dal.GetFlightExtremeMongoCollectionByFlight(database, flight); modelCollection6.Remove(flightIdQuery); } } catch (Exception e) { LogHelper.Error("RemoveRelatedRecords", e); } }
/// <summary> /// 添加Level1、Level2数据点记录,这是记录,需要重新定位数据库和Collection /// </summary> /// <param name="flight"></param> /// <param name="parameterID"></param> /// <param name="reducedRecords"></param> /// <param name="level2Record"></param> /// <returns></returns> internal string AddOneParameterValue(FlightDataEntities.Flight flight, string parameterID, FlightDataEntities.Level1FlightRecord[] reducedRecords) { using (AircraftMongoDbDal dal = new AircraftMongoDbDal()) { MongoServer mongoServer = dal.GetMongoServer(); //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常 try {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑 MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, flight.Aircraft.AircraftModel); if (database != null) { MongoCollection<FlightDataEntities.Level1FlightRecord> modelCollection1 = dal.GetLevel1FlightRecordMongoCollectionByFlight(database, flight); modelCollection1.InsertBatch(reducedRecords); //MongoCollection<FlightDataEntities.Level2FlightRecord> modelCollection2 // = dal.GetLevel2FlightRecordMongoCollectionByFlight(database, flight); //modelCollection2.InsertBatch(level2Records); } } catch (Exception e) { LogHelper.Error("AddOneParameterValue", e); return e.Message; } } return string.Empty; }
private MongoCursor<Level1FlightRecord> FindMongoDBCursor(Flight flight, string[] parameterIds, int startSecond, int endSecond, AircraftMongoDbDal dal, MongoDatabase database) { MongoCollection<FlightDataEntities.Level1FlightRecord> modelCollection1 = dal.GetLevel1FlightRecordMongoCollectionByFlight(database, flight); List<IMongoQuery> qs = new List<IMongoQuery>(); qs.Add(Query.EQ("FlightID", flight.FlightID)); qs.Add(Query.Or(Query.And( Query.GTE("StartSecond", startSecond), Query.LT("StartSecond", endSecond)), Query.And( Query.GT("EndSecond", startSecond), Query.LTE("EndSecond", endSecond)))); //最后这个条件是如果一个Level1Record的起始秒、结束秒 //介于参数起始值和结束值之间,都可以Select, //因为区间段基本上是定长的,所以可以这样认定 if (parameterIds != null && parameterIds.Length > 0) { var bsonParamID = from id in parameterIds select new BsonString(id); qs.Add(Query.In("ParameterID", bsonParamID));//前两个条件必须:架次、时间 } IMongoQuery q1 = Query.And(qs); //var bsonParamID = from id in parameterIds // select new BsonString(id); ////先取出Level1记录 //IMongoQuery q1 = Query.And( // Query.EQ("FlightID", flight.FlightID), // Query.Or(Query.And( // Query.GTE("StartSecond", startSecond), // Query.LT("StartSecond", endSecond)), // Query.And( // Query.GT("EndSecond", startSecond), // Query.LTE("EndSecond", endSecond))), // //最后这个条件是如果一个Level1Record的起始秒、结束秒 // //介于参数起始值和结束值之间,都可以Select, // //因为区间段基本上是定长的,所以可以这样认定 // Query.In("ParameterID", bsonParamID) //前两个条件必须:架次、时间 // ); var cursor = modelCollection1.Find(q1); return cursor; }