internal string AddOrReplaceAircraftInstance(AircraftInstance instance) { using (AircraftMongoDbDal dal = new AircraftMongoDbDal()) { MongoServer mongoServer = dal.GetMongoServer(); //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常 try {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息, //建议不要分表,存放在Common里面 MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, instance.AircraftModel); if (database != null) { MongoCollection<FlightDataEntities.AircraftInstance> modelCollection = dal.GetAircraftInstanceCollection(database); IMongoQuery q1 = Query.EQ("AircraftNumber", new MongoDB.Bson.BsonString(instance.AircraftNumber)); MongoCursor<AircraftInstance> cursor = modelCollection.Find(q1); if (cursor != null && cursor.Count() > 0) { foreach (var value in cursor.AsEnumerable()) { value.LastUsed = instance.LastUsed; value.AircraftModel = value.AircraftModel; modelCollection.Save(value); } } else {//如果INSERT,就必须插入之后才有ObjectId,需要返回带有ObjectId的对象(不单单只考虑WCF返回没带有ObjectId的情况) modelCollection.Insert(instance); var cursor2 = modelCollection.Find(q1); if (cursor2 != null && cursor2.Count() > 0) { instance = cursor2.First(); } else instance = null; } } } catch (Exception e) { LogHelper.Error("AddOrReplaceAircraftInstance", e); return e.Message; } } return string.Empty; }
internal string DeleteAircraftInstance(AircraftInstance instance) { using (AircraftMongoDbDal dal = new AircraftMongoDbDal()) { MongoServer mongoServer = dal.GetMongoServer(); //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常 try {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息, //建议不要分表,存放在Common里面 MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, instance.AircraftModel); if (database != null) { MongoCollection<FlightDataEntities.AircraftInstance> modelCollection = dal.GetAircraftInstanceCollection(database); IMongoQuery q1 = Query.EQ("AircraftNumber", new MongoDB.Bson.BsonString(instance.AircraftNumber)); MongoCursor<AircraftInstance> cursor = modelCollection.Find(q1); if (cursor != null && cursor.Count() > 0) { //foreach (var value in cursor.AsEnumerable()) //{ // value.LastUsed = instance.LastUsed; // value.AircraftModel = value.AircraftModel; //}//.Save(value); } modelCollection.Remove(q1); } } catch (Exception e) { LogHelper.Error("DeleteAircraftInstance", e); return e.Message; } } return string.Empty; }
internal AircraftInstance[] GetAllAircrafts(AircraftModel model) { if (model == null || string.IsNullOrEmpty(model.ModelName)) { LogHelper.Warn("aircraftModel为空或aircraftModel.ModelName为空或FlightID为空(GetAllAircrafts)。", 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.AircraftInstance> modelCollection = dal.GetAircraftInstanceCollection(database); modelCollection.FindAll(); //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.FindAll();// modelCollection.Find(query); var result = cursor.AsQueryable(); return result.ToArray(); } } catch (Exception e) { LogHelper.Error("GetAllAircrafts", e); } } return null; }