internal string AddFlightConditionDecisionRecordsBatch(Flight flight,
            FlightDataEntities.Decisions.DecisionRecord[] records)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, flight.Aircraft.AircraftModel);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.Decisions.DecisionRecord> modelCollection1
                            = dal.GetFlightConditionDecisionRecordMongoCollectionByFlight(database, flight);

                        IMongoQuery q1 = Query.EQ("FlightID", new MongoDB.Bson.BsonString(flight.FlightID));
                        modelCollection1.Remove(q1);

                        modelCollection1.InsertBatch(records);
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("AddFlightConditionDecisionRecordsBatch", e);
                    return e.Message;
                }
            }
            return string.Empty;
        }
        /// <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);
            }
        }
        internal DecisionRecord[] GetFlightConditionDecisionRecords(AircraftModel model,
            DateTime startYearMonth, DateTime endYearMonth, string[] aircraftNumbers)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, model);

                    IMongoQuery q1 = Query.GTE("FlightDate", new BsonDateTime(startYearMonth));
                    IMongoQuery q2 = Query.LTE("FlightDate", new BsonDateTime(endYearMonth));

                    IMongoQuery q0 = null;
                    if (database != null)
                    {
                        if (aircraftNumbers != null && aircraftNumbers.Length > 0)
                        {
                            MongoCollection<Flight> modelCollection1 =
                                database.GetCollection<Flight>(AircraftMongoDb.COLLECTION_FLIGHT);

                            var queryableFlights = modelCollection1.AsQueryable();
                            var flights = from oneFlight in queryableFlights
                                          where oneFlight.Aircraft != null && oneFlight.Aircraft.AircraftModel != null
                                          && oneFlight.Aircraft.AircraftModel.ModelName == model.ModelName
                                          && oneFlight.FlightDate > startYearMonth && oneFlight.FlightDate <= endYearMonth
                                          && aircraftNumbers.Contains(oneFlight.Aircraft.AircraftNumber)
                                          select oneFlight.FlightID;

                            var flights2 = flights.Distinct();

                            List<MongoDB.Bson.BsonString> list = new List<BsonString>();
                            foreach (var f in flights2)
                            {
                                list.Add(new BsonString(f));
                            }
                            q0 = Query.In("FlightID", list);
                        }
                    }

                    MongoCollection<FlightDataEntities.Decisions.DecisionRecord> modelCollection2
                        = dal.GetFlightConditionDecisionRecordMongoCollectionByFlight(database, null);//没有按Flight分割的

                    IMongoQuery query = q0;//(q0 == null) ? Query.And(q1, q2) : Query.And(q1, q2, q0);

                    if (query != null)
                    {
                        var cursor = modelCollection2.Find(query);

                        return cursor.ToArray();
                    }

                    return new DecisionRecord[] { };
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetFlightConditionDecisionRecords", e);
                    return new DecisionRecord[] { };
                }
            }

            return new DecisionRecord[] { };
        }